我尝试根据两个变量(分数和名称)进行过滤(先得分,然后是名称)。
这适用于各种游戏,其中包括得分可能相反的游戏(例如高尔夫)和得分正常的游戏(例如足球)。
我目前的代码是:
<span ng-repeat="sel in pot.sels | orderBy:['score','name']:CompCtrl.isReverse()">
这里的问题是,如果分数需要,名称也会反转。我试图获取它,以便名称永远不会被布尔值反转,但得分是( isReverse()检查如果游戏是反向得分游戏)。
阅读我能找到的所有内容,如果不创建自定义过滤器来处理此问题,这似乎是不可能的。这是正确的还是我错过了这样做的方法?
考虑到这一点的最佳方式是,简单来说,我需要以下内容:
布尔值= true - &gt; -score,名称
布尔值= false - &gt;得分,姓名
感谢。
答案 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;
订购的东西。