Angularjs 如何在ng repeat中按属性对对象数组排序而不触发无限循环

Angularjs 如何在ng repeat中按属性对对象数组排序而不触发无限循环,angularjs,angularjs-filter,Angularjs,Angularjs Filter,我有一条解析数据的路径: .state('app.items', { url: '/:item', views: { 'content@app': { templateUrl: 'app/views/item.html', controller: 'ItemsCtrl', } }, resolve: { items: ['SomeService', function (SomeService) { ret

我有一条解析数据的路径:

.state('app.items', {
  url: '/:item',
  views: {
    'content@app': {
      templateUrl: 'app/views/item.html',
      controller: 'ItemsCtrl',
    }
  },
  resolve: {
    items: ['SomeService',
      function (SomeService) {
        return SomeService.getData();
      }
    ]
  }
})
以及控制器:

app.controller('ItemsCtrl', ['items', function (items) {
  this.items = items;

  /**
   * [
   *   {
   *     status: '...',
   *   }, ...
   * ]
   */
}]);
我想按对象的属性对视图中的数组进行排序

<div ng-repeat="item in items | myFilter"></div>
此过滤器工作正常,但也会触发无限循环。我试图使用内置的
orderBy
过滤器(它工作得很好),但我不相信删除的项目会是最后一个(如果我想添加更多状态怎么办?)。另外,我不能在控制器中使用自定义函数,因为这个过滤器将在整个应用程序中多次使用


我如何实现
myFilter
以不触发无限循环?

你怎么知道它触发无限循环?@gaurav5430我在控制台中得到
[$rootScope:infdig](…)
错误该过滤器似乎以一种规则的方式为我工作,请参见小提琴:,也许无限循环是由于其他原因造成的?@gaurav5430这个过滤器对我也适用,但只适用于小列表。如果我使用更大的列表(大约100个对象),我会得到这个错误。@gaurav5430我的代码中有一些奇怪的东西。我会自己调查的。谢谢你的帮助!
app.filter('myFilter', function () {
  return function (items) {
    return items.sort(function (item) {
      return item.status === 'REMOVED' ? 1 : -1;
    });
  };
});