我在使用 Knockout.JS 的嵌套绑定时遇到问题
例如,如果我在 app.js 文件中有以下内容:
var UserModel = function() {
this.writeups = ko.observableArray([]);
}
var WriteupModel = function() {
this.type = 'some type';
}
var MyViewModel = function() {
this.newUser = new UserModel();
this.selectedUser = ko.observable(this.newUser);
this.selectedUser().writeups().push(new WriteupModel());
}
ko.applyBindings(new MyViewModel());
以及以下视图:
<div id="empReportView" data-bind="template: { name: 'empTmpl', data: selectedUser }"></div>
<script type="text/html" id="empTmpl">
<table>
<tbody data-bind="template: { name: 'empWuItem', foreach: $data.writeups } ">
</tbody>
</table>
</script>
<script type="text/html" id="empWuItem">
<tr>
<td data-bind="text: type"></td>
</tr>
</script>
每当另一个 WriteupModel 被推送到属于 selectedUser 的 writeups 数组时,表就不会更新。这是我试图完成的简化版本,但可以假设当他们创建一个 writeup 时,它应该根据新信息更新 write-ups 表。
我是 Knockout 的新手,因此我们将不胜感激!
谢谢。
-=-= 编辑 1 =-=-
需要注意的一件事是,如果您重新加载 selectedUser 的绑定,它将为添加的 writeup 吐出 empWuItem 模板。这似乎效率低下,因为绑定应该在将 WriteUp 添加到 UserModel 中的 writeups 可观察数组时触发,而不必“重新分配”视图模型中的 selectedUser 属性。