私は次のシナリオを持っています:
コンテンツ/タイトルなどに加えて、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の更新をトリガーします)。