【发布时间】:2014-07-03 01:59:42
【问题描述】:
我有这个非常简单的 knockoutjs 脚本。我的视图模型包含一个名为“模块”的属性,它是一个字符串数组。如果我有一个这样的 foreach 列表,它会为每个项目打印一个模块列表:
<tbody data-bind="foreach: items">
<tr>
<td data-bind="text: modules"></td>
</tr>
</tbody>
但是,如果我想打印模块的数量,可以添加一个计算的 observable:
<tbody data-bind="foreach: items">
<tr>
<td data-bind="text: numModules"></td>
</tr>
</tbody>
我遇到了问题。 'undefined' 不是我计算函数第一行所说的函数。我的 js 代码如下所示:
function AppViewModel(data) {
var self = this;
ko.mapping.fromJS(data, {}, this);
this.numModules = ko.computed(function() {
return self.modules().length;
});
};
$.getJSON("/api/items", function(data) {
var viewModel = new AppViewModel(data);
ko.applyBindings(viewModel);
});
【问题讨论】:
-
在您的 AppViewModel 中您没有
modules。 -
这个想法是模型由数据定义,通过使用映射插件。