我有以下情况:
由 observableArray 表示的项目列表,除了内容/标题等。我想让它们中的每一个都可以在视图中折叠。
现在问题变成了我是否应该将此状态存储为每个项目的可观察对象:如果是这样,我如何实现一个触发器来有效地切换所有项目的打开/关闭- 即。最小化dom更新。
ko.utils.arrayForEach似乎是要走的路,它是否仅在循环结束时触发视图刷新?有没有更好的办法?
ko.utils.arrayForEach(this.items(), function(item) {
...
item.close(true);
...
});
编辑:这是 DOM 中发生的事情(在淘汰赛 foreach 循环内)
<div class="item">
<!-- ko 'if': !close() -->
<div class="article" data-bind="html: article"></div>
<!-- /ko -->
</div>
所以基本上我可以单击此页面上某处的按钮,该按钮运行 ko.utils.arrayForEach 来切换所有项目。它有效,我只是不知道这是否是最好的方法(例如,只触发一次 dom 更新而不是每个项目)。