过滤对象数组时出现无限摘要错误

Infinite digest error on filtering array of objects

我有一个对象数组如下:

$scope.arr = [
    {'val': true},
    {'val': false},
    {'val': false},
    {'val': true},
    {'val': false},
]

我将 ng-repeat 与过滤器一起使用,该过滤器根据键 'val' 对数组进行排序,并将 'val' 设置为 true 的对象放在其他对象之前。这是过滤器:

app.filter('ownerFirst', [function() {
    return function(list) {
        list.sort(function(a, b) {
            return a['val'] - b['val'];
        })
        return list;
    }
}])

模板:

<div ng-repeat="obj in arr | ownerFirst">

但是我得到了 infinite digest error。为什么会这样?

我认为您不需要自定义过滤器,尝试像这样使用 orderBy

<div ng-repeat="obj in arr | orderBy: '-val'">    

您需要将 - 符号放在 val 前面,因为您需要降序排列。