敲除改变一个变量的值
Knockout changes the value of one variable
我正在尝试在淘汰赛中编辑一个用户,但发生了这种情况,我得到了元素,然后在查询中将其发送给 Controler,return 我的(对象)在 JSON
我将该对象保存在这个变量中:
var ViewUsuarios = function () {
self.dato = ko.observableArray();
var usuariosUri = '/api/Usuarios/';
var rolesUri = 'api/Rols/';
function ajaxHelper(uri, method, data) {
self.error('');
return $.ajax({
type: method,
url: uri,
dataType: 'json',
contentType: 'application/json',
//Strinfy convierte una cadena de tipo javascript a objetos tipo JSON
data: data ? JSON.stringify(data) : null
}).fail(function (jqXHR, textStatus, errorThrown) {
self.error(errorThrown);
});
}
}
一切正常,但当我这样做时:
ajaxHelper(usuariosUri + item.ID, 'GET').done(function (data) {
//alert(JSON.stringify(data));
self.upUsuario(data); <- Here i have the user
});
ajaxHelper(rolesUri + item.RolId,'GET').done(function (data) {
self.dato(data); <- Here works i have the correct ROL
alert(JSON.stringify(self.dato())+"Correcto ");
});
alert(JSON.stringify(self.dato())+"Incorrecto"); <- Here don't work at first click is null and second have the after element
不知道哪里出错了
那是因为:
alert(JSON.stringify(self.dato())+"Incorrecto");
同步调用
self.dato(data); alert(JSON.stringify(self.dato())+"Correcto ");
被异步调用。
所以实际的执行顺序是:
ajaxHelper(usuariosUri + item.ID, 'GET')
ajaxHelper(rolesUri + item.RolId,'GET')
alert(JSON.stringify(self.dato())+"Incorrecto");
self.upUsuario(data);
或
self.dato(data); alert(JSON.stringify(self.dato())+"Correcto ");
self.dato
直到 4 才会被初始化,尽管 3 指的是 self.dato
.
这就是为什么 self.dato
在第一次点击时是空的。
也许在第二次点击时,self.dato
包含 ajaxHelper
.
的先前结果
我正在尝试在淘汰赛中编辑一个用户,但发生了这种情况,我得到了元素,然后在查询中将其发送给 Controler,return 我的(对象)在 JSON 我将该对象保存在这个变量中:
var ViewUsuarios = function () {
self.dato = ko.observableArray();
var usuariosUri = '/api/Usuarios/';
var rolesUri = 'api/Rols/';
function ajaxHelper(uri, method, data) {
self.error('');
return $.ajax({
type: method,
url: uri,
dataType: 'json',
contentType: 'application/json',
//Strinfy convierte una cadena de tipo javascript a objetos tipo JSON
data: data ? JSON.stringify(data) : null
}).fail(function (jqXHR, textStatus, errorThrown) {
self.error(errorThrown);
});
}
}
一切正常,但当我这样做时:
ajaxHelper(usuariosUri + item.ID, 'GET').done(function (data) {
//alert(JSON.stringify(data));
self.upUsuario(data); <- Here i have the user
});
ajaxHelper(rolesUri + item.RolId,'GET').done(function (data) {
self.dato(data); <- Here works i have the correct ROL
alert(JSON.stringify(self.dato())+"Correcto ");
});
alert(JSON.stringify(self.dato())+"Incorrecto"); <- Here don't work at first click is null and second have the after element
不知道哪里出错了
那是因为:
alert(JSON.stringify(self.dato())+"Incorrecto");
同步调用self.dato(data); alert(JSON.stringify(self.dato())+"Correcto ");
被异步调用。
所以实际的执行顺序是:
ajaxHelper(usuariosUri + item.ID, 'GET')
ajaxHelper(rolesUri + item.RolId,'GET')
alert(JSON.stringify(self.dato())+"Incorrecto");
self.upUsuario(data);
或
self.dato(data); alert(JSON.stringify(self.dato())+"Correcto ");
self.dato
直到 4 才会被初始化,尽管 3 指的是 self.dato
.
这就是为什么 self.dato
在第一次点击时是空的。
也许在第二次点击时,self.dato
包含 ajaxHelper
.