我点击了一个按钮,我打电话的是:
视图模型:
self.MyArray = ko.observableArray();
self.remove = function(c) {
ko.utils.arrayForEach(c.sData(), function(ser) {
if (ser.Check() == true) {
self.MyArray.push(service);
count++;
}
});
if (count) {
$.ajax({
url: "/api/LoadCustomer/?reason=" + reason,
cache: false,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON(self.MyArray),
success: function(data) {
ko.utils.arrayForEach(self.MyArray(), function(removedata) {
c.sData.remove(removedata);
});
}
});
self.MyArray([]);
}
};
如果我在我的ajax调用中包含async:false
我会把一切都搞定但是如果我没有包含async
(它的默认属性是真的)我不知道在我的成功函数ajax呼叫self.MyArray()
仍为Empty
,但如果我保持虚假(尴尬)则不然。
有时候我担心,如果我在加载到可观察数组(OnLoad)时有async:true
的一系列ajax调用,则可能存在轻微错位数据的可能性。
帮助我理解。
答案 0 :(得分:5)
您的可观察数组MyArray
为空的原因有时是因为在完成ajax调用之前执行了这行代码self.MyArray([]);
。怎么样呢 -
if (count) {
$.ajax({
url: "/api/LoadCustomer/?reason=" + reason,
cache: false,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON(self.MyArray),
success: function (data) {
ko.utils.arrayForEach(self.MyArray(), function (removedata) {
c.sData.remove(removedata);
});
},
complete: function() { // complete fires after success and error callbacks
self.MyArray([]); // empty the array no matter what happens (error or success)
}
});
}