上面的图像是observableArray,它使用breezeJS(使用EntityManager)在queryinq数据库中出现。
我的问题是
我们如何根据某些标准对此观察值进行排序,即 (object.attributeName)?
所以这个数组是根据一些属性名称排序的,我们可以简单地在foreach绑定中使用observable并以排序的方式使用它们,因为我不想一直查询(本地或从服务器)获取按顺序排列的数据。
答案 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。