したがって、私のアプリケーションには、標準の Customer -> Order -> OrderLineItems タイプの行に沿って、かなり標準的なネストされたモデルの実装を使用するページがあります。私にとっての違いは、OrderLineItems のモデルが非常に複雑であることです。
私のコードでは、オブザーバブル配列とオブザーバブルの両方を使用して、ビューを正しく更新するために、「myObservable.valueHasMutated()」をかなり頻繁に呼び出していることがわかりました。
これを手動で行わなければならないのは、本来あるべき姿ではないというのが直感ですが、何を変更する必要があるかを知るためにどこを見ればよいかわかりません。いくつか質問があります:
- これは「ディープ/ビッグ」モデルでは正常ですか?
- これに対処するために私が探すかもしれない明らかなものはありますか?
- KO で実装されたこのような複雑なモデルの Web 上の例はありますか?
ビューモデルにあるものの例:
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>