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 在排序完成后再次计算。

另外:有没有更好的方法将多个 observableArrays 连接在一起?

谢谢你。

4

1 回答 1

2

只需对连接的数组进行排序。

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

每次数组更改时都必须使用它,但您对此无能为力。

如果您要连续进行许多更改,请考虑在计算的 observable 上使用rateLimit扩展器(或在淘汰 3.1.x 之前)。throttle这将通过折叠在特定时间段内发出的所有通知来限制可观察对象发送通知的次数。

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