AngularJS orderBy - 多个字段,但只有一个字段

时间:2015-12-10 10:17:19

标签: javascript angularjs angularjs-filter angular-filters angularjs-orderby

我尝试根据两个变量(分数和名称)进行过滤(先得分,然后是名称)。

这适用于各种游戏,其中包括得分可能相反的游戏(例如高尔夫)和得分正常的游戏(例如足球)。

我目前的代码是:

<span ng-repeat="sel in pot.sels | orderBy:['score','name']:CompCtrl.isReverse()">

这里的问题是,如果分数需要,名称也会反转。我试图获取它,以便名称永远不会被布尔值反转,但得分是( isReverse()检查如果游戏是反向得分游戏)。

阅读我能找到的所有内容,如果不创建自定义过滤器来处理此问题,这似乎是不可能的。这是正确的还是我错过了这样做的方法?

考虑到这一点的最佳方式是,简单来说,我需要以下内容:

  

布尔值= true - &gt; -score,名称

     

布尔值= false - &gt;得分,姓名

感谢。

1 个答案:

答案 0 :(得分:1)

我会使用自定义函数过滤器,如下所示:

<span ng-repeat="sel in pot.sels | orderBy:[orderScore,'name']">

js是这样的:

angular.module('yourModule').controller('MyCtrl',['$scope',function($scope){
    $scope.orderScore = function(el){
        return (isReverse() ? '-' : '+') + el.score;
    }
}]);

我没有对此进行测试,但是为了向您展示这个想法,我只需要找到一种方法来返回可以使用&lt ;, ===和&gt;

订购的东西。