【发布时间】:2013-08-12 13:38:26
【问题描述】:
我正在尝试计算嵌套子列表的值的总和,我要查询的 VM 正在使用 KO 映射器进行映射,然后使用我的计算字段进行扩展。它似乎找不到我要查找的嵌套数组:
var HouseholdViewModel = function(data) {
this.$type = 'HouseholdViewModel';
ko.mapping.fromJS(data, mapping, this);
this.T12 = ko.computed(function () {
var total = 0;
ko.utils.arrayForEach(this.Accounts(), function (account) {
total += account.T12Revenue();
});
return total;
}, this);
};
var AccountViewModel = function(data) {
this.$type = 'AccountViewModel';
ko.mapping.fromJS(data, mapping, this);
};
var mapping = {
'Households': {
create: function(options) {
return new HouseholdViewModel(options.data);
}
},
'Accounts': {
create: function(options) {
return new AccountViewModel(options.data);
}
}
};
我收到错误消息“Uncaught TypeError: Object [object Object] has no method 'Accounts'”。我假设这是由于 KO.Mapper 尚未绑定 Accounts 但映射调用高于计算的 observable。任何帮助将不胜感激。
【问题讨论】:
-
提示:将
<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>添加到您的页面并检查您的视图模型。
标签: jquery knockout.js knockout-mapping-plugin