排序 Angular

Sorting in Angular

我正在使用 Angular 构建应用程序。 我有 JSON 从按日期排序的服务器返回。 我在视图中绑定到此数据。

用户可以更改视图中显示的数据。这将启动一个请求,并且视图在绑定到 JSON 数据更改时得到更新。

当 Angular 获取此 JSON 数据时,它会按字母顺序对其进行排序。 我想维护来自服务器的排序顺序。

我用谷歌搜索了一下,找到了以下解决方案...

<div ng-repeat="key in notSorted(myData)" ng-init="data = myData[key]">

"notSorted"是控制器上的一个函数...

$scope.notSorted = function(obj){
    if (!obj) {
        return [];
    }
    return Object.keys(obj);
}

这最初工作正常。数据以正确的顺序显示。 但是它打破了绑定。因此,当用户尝试更改正在显示的数据时,视图不会更新,因为 notSorted 看不到绑定更改。

我可以想出一些巧妙的方法来解决这个问题,例如手动触发更新,但我想以正确的 angular 方式进行。 有人知道那是什么吗?

谢谢

我相信你需要这个: https://docs.angularjs.org/api/ng/filter/orderBy

它的工作原理是这样的:

<div ng-repeat="item in items | orderBy:'key'">

由于数据从服务器返回的方式以及我需要迭代该数据的方式,我无法获得任何 "orderBy" 或过滤器解决方案。 但是我发现在 Angular 1.4 中他们删除了默认顺序 (alphabetical/ascending) 以支持保留从服务器返回数据的顺序...

http://jaxenter.com/angular-releases-1-3-update-1-4-beta-113906.html

我使用的是 1.3.x 并简单地更新到 1.4 并且它可以运行 OOTB。

谢谢