因此,我的应用程序中有一个页面,它使用相当标准的嵌套模型实现,符合标准 Customer -> Order -> OrderLineItems 类型。对我而言,不同之处在于 OrderLineItems 的模型非常复杂。
在我的代码中,无论是可观察数组还是可观察对象,为了正确更新我的视图,我发现我经常调用“myObservable.valueHasMutated()”。
不得不手动执行此操作并不像应有的那样,这是一种直觉 - 但我不确定在哪里查看可能需要更改的内容。所以有几个问题:
- 这对于“深/大”模型来说是正常的吗?
- 我可能会寻找一些明显的东西来解决这个问题吗?
- 网络上是否有使用 KO 实现的复杂模型的示例?
我的视图模型中的一个示例:
self.projectsVisible = ko.observable(false);
self.toggleProjectVisibility = function () {
self.projectsVisible(!self.projectsVisible());
self.projectsVisible.valueHasMutated();
};
这与按钮元素和 DIV 相关联:
<div data-bind="visible: projectsVisible">
<table>
<thead data-bind="template: {name: 'projectHeader'}"></thead>
<tbody data-bind="template: {name: 'project', foreach: projects}"></tbody>
</table>
</div>
<button type="button" data-bind="click: toggleProjectVisibility">
Toggle Projects On/Off
</button>