我有一个可观察的数组由AJAX调用填充,但它没有更新。
function ViewModel() {
var self = this;
self.FinanceTypes = ko.observableArray([]);
self.Country = ko.observable('@Model.Country.CountryName');
function FinanceTypeViewModel(data) {
var self = this;
self.Name = data.Name;
self.Tax = data.TaxPercentage;
//self.Accounts = data.AccountTypes;
}
self.getFinanceTypes = function() {
var data = { country: ko.toJS(self.Country()) };
$.getJSON("/Admin/GetFinanceTypes", data, function(result) {
var mapped = ko.utils.arrayMap(result, function(item) {
return new FinanceTypeViewModel(item);
});
ko.utils.arrayPushAll(self.FinanceTypes(), mapped);
self.FinanceTypes.valueHasMutated();
});
}
self.getFinanceTypes();
}
问题在于
self.FinanceTypes.valueHasMutated();
其他一切都有效。这给出了一个" Uncaught ReferenceError:Name未定义"
如果我将其更改为
self.FinanceTypes().valueHasMutated();
我得到" Uncaught TypeError:undefined不是函数"
由于
答案 0 :(得分:0)
致电ko.utils.arrayPushAll(self.FinanceTypes(), mapped)
将mapped
中的所有项目推送到解包 FinanceTypes
。不打开它就打电话给你,你不必打电话给valueHasMutated
:ko.utils.arrayPushAll(self.FinanceTypes, mapped)