0

私はこのような計算された配列を持っています、

self.weapons = ko.observableArray(
  []
  );

self.wings = ko.observableArray(
  []
  );


 self.itemList = ko.computed( function()
 {
     return self.weapons().concat(self.wings());
 }
 },
 this );

この配列をソートしたいと思います。

ko.observableArray を問題なくソートできます。

ここでの問題は、ソートが完了した後に ko.computed が再度計算されることだと思います。

また、複数のobservableArrayを連結するより良い方法はありますか?

ありがとうございました。

4

1 に答える 1

2

連結された配列をソートするだけです。

self.itemList = ko.computed(function () {
    var weapons = self.weapons(),
        wings = self.wings();
    return weapons.concat(wings).sort();
});

いずれかのアレイが変更されるたびに再利用する必要がありますが、それについてできることはあまりありません。

連続して多くの変更を行う場合は、計算されたオブザーバブルでrateLimitエクステンダー(またはthrottleノックアウト3.1.xの前)を使用することを検討してください。これにより、特定の期間内に行われたすべての通知を折りたたむことにより、オブザーバブルによって通知が送信される回数が制限されます。

self.itemList = ko.computed(function () {
    ...
}).extend({ rateLimit: 500 }); // wait at least 500ms before first notification
于 2012-09-18T05:57:35.543 に答える