この投稿から:
dependentObservable
まず、 (aka )を最適化することをお勧めしますcomputed
。オブザーバブルを読み取ると、Knockout は依存関係を依存関係マネージャーに登録します...while ループで this.ParentList() にアクセスしていることを疑似コードで確認できます。これは、 registerDependency が 3000 回呼び出され、依存関係配列が 3000 回スキャンされることを意味します。
したがって、私の一番の提案は次のとおりです。ループの前にすべてのオブザーバブルを読み取ります。
この良いアドバイスを念頭に置いて、ここに私の質問があります:
observable
ko ユーティリティ メソッド (次のように) を使用して配列を反復処理するのは悪い形式ですか? [それが であると仮定しthis.mySelectListItems()
ますobservableArray
]:
self.selectedValuesCount = ko.computed(function () {
var total = 0;
ko.utils.arrayForEach(this.mySelectListItems(), function (item) {
if (item.selected() === true) {
total += 1;
}
});
return total;
}, self);
つまり、次のことを行うことで何か得られるものはありますか?
self.selectedValuesCount = ko.computed(function () {
var total = 0;
var myArray = this.mySelectListItems();
ko.utils.arrayForEach(myArray, function (item) {
if (item.selected() === true) {
total += 1;
}
});
return total;
}, self);