排序一个可观察的数组,该数组查询了breezeJS返回的数据 [英] Sorting an observable array, which has queried data returned by breezeJS

查看:95
本文介绍了排序一个可观察的数组,该数组查询了breezeJS返回的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

The above image is of observableArray which is coming while queryinq database using breezeJS (using EntityManager).

我的问题是

我们如何根据某些标准(例如, (object.attributeName)吗?

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

因此该数组基于某些属性名称进行排序,我们可以简单地在foreach绑定中使用observable并以排序方式使用它们,因为我不想一直(本地或从服务器)查询以获取数据排序的顺序.

So that this array is sorted based on some attribute name and we can simply use the observable within foreach bindings and use them in sorted way because I don't wanna query all the time (locally or from server) to get data in sorted order.

推荐答案

因此进行计算

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降序更改为排序,只需更改:

so to change to a sort by name descending, you simply change:

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

,您计算的依存关系orderedObsArr将被更新.

and your computed dependent orderedObsArr will be updated.

有关工作示例,请参见这支笔.

See this pen for a working example.

这篇关于排序一个可观察的数组,该数组查询了breezeJS返回的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆