对可观察数组进行排序,该数组已查询breezeJS返回的数据

时间:2015-06-18 11:15:53

标签: sorting knockout.js breeze

Image of an observableArray coming while queryinq database using breeze

上面的图像是observableArray,它使用breezeJS(使用EntityManager)在queryinq数据库中出现。

我的问题是

  

我们如何根据某些标准对此观察值进行排序,即   (object.attributeName)?

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

1 个答案:

答案 0 :(得分:2)

所以制作一个计算

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