计算数组排序

时间:2012-09-18 03:40:45

标签: javascript knockout.js

我有一个这样的计算数组,

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连接在一起?

谢谢。

1 个答案:

答案 0 :(得分: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