对一个可观察数组进行排序,该数组具有由 breezeJS 返回的查询数据

Sorting an observable array, which has queried data returned by breezeJS

上图是使用breezeJS(使用EntityManager)查询数据库时出现的observableArray。

我的问题是

how do we sort this observable based on some criteria i.e., (object.attributeName) ?

所以这个数组是根据一些属性名称排序的,我们可以简单地使用 foreach 绑定中的 observable 并以排序的方式使用它们,因为我不想一直查询(本地或从服务器)来获取数据已排序。

所以做一个计算

var orderDirection = ko.observable(1);
var orderField = ko.observable("id");
var orderedObsArr = ko.computed(function(){
     var oDir = orderDirection();
     var oField = orderField();
     var newArr = originalObsArr().slice(0);
     newArr.sort(function(a,b){
         return oDir * (a[oField] > b[oField] ? 1 : -1);
     });
     return newArr;
});

所以要更改为按 name 降序排序,您只需更改:

orderDirection(-1);
orderField("name");

并且您计算的受抚养人 orderedObsArr 将被更新。

有关工作示例,请参阅 this pen