後計算觀測映射我有一個Ajax調用視圖模型來保存數據:淘汰賽:不能Ajax調用
ViewModel = function (data) {
contractsAutocompleteUrl = data.ContractsAutocompleteUrl;
var self = this;
ko.mapping.fromJS(data, lineMapping, self);
self.save = function() {
self.isBeingSaved(true);
$.ajax({
url: data.SaveUrl,
type: "POST",
data: ko.toJSON(self),
contentType: "application/json",
success: function(data) {
if (data.viewModel != null) {
ko.mapping.fromJS(data.viewModel, lineMapping, self);
};
}
});
},
我有一些計算的變量:
self.TotalSaturdayHrs = ko.pureComputed(function() {
var result = 0;
ko.utils.arrayForEach(self.Lines(),
function(line) {
result = addNumbers(result, line.SaturdayHrs());
});
return result;
}),
self.TotalSundayHrs = ko.pureComputed(function() {
var result = 0;
ko.utils.arrayForEach(self.Lines(),
function(line) {
result = addNumbers(result, line.SundayHrs());
});
return result;
}),
。 。 。 (一路星期五)
而且一個計算GrandTotal:
self.GrandTotalHrs = ko.pureComputed(function() {
var result = addNumbers(0, self.TotalSaturdayHrs());
result = addNumbers(result, self.TotalSundayHrs());
result = addNumbers(result, self.TotalMondayHrs());
result = addNumbers(result, self.TotalTuesdayHrs());
result = addNumbers(result, self.TotalWednesdayHrs());
result = addNumbers(result, self.TotalThursdayHrs());
result = addNumbers(result, self.TotalFridayHrs());
return result;
}),
Ajax調用後,現在,計算觀測TotalSaturdayHrs不再計算的觀測,他們根本性質,因此我GrandTotal計算拋出一個例外。 這是爲什麼,我該如何解決這個問題?
我的第一個猜測是服務器在POST響應中發送'TotalSaturdayHrs'(etc)屬性,隨後映射插件將覆蓋您的視圖模型。 – Tomalak
不嚴格相關,但請告訴我'addNumbers()'看起來不像'function addNumbers(a,b){return a + b; }'。 – Tomalak
var addNumbers = function(result,number)if(number === null || number ===「」){ return result; } 返回結果+ parseFloat(number); } – arame3333