Angularjs OrderBy对ng-repeat不工作
发布时间:2020-12-17 08:34:36 所属栏目:安全 来源:网络整理
导读:我试图使用AngularJS我的第一个项目(一个锦标赛经理)和order-filter过滤器ng-repeat不工作:(我已经阅读所有的 documentation about that,但没有做: 所以,我有vars定义在$ scope像这样: $scope.order_item = "count_win";$scope.order_reverse = false;$s
我试图使用AngularJS我的第一个项目(一个锦标赛经理)和order-filter过滤器ng-repeat不工作:(我已经阅读所有的
documentation about that,但没有做:
所以,我有vars定义在$ scope像这样: $scope.order_item = "count_win"; $scope.order_reverse = false; $scope.teams = { 100 : { id: 100,name: "XXX",count_win: 1,count_loose: 2,goal_average: 1,},200 : { id: 200,[...] }; 现在,在我的观点,我试图重新排序(首先只有一个订单项目,但从未工作…) <tr ng-repeat="team in teams | orderBy:order_item:order_reverse"> <td>{{team.name}}</td> <td>{{team.count_loose}}</td> <td>{{team.goal_average}}</td> </tr> 第二次,我想从2条信息重新排序:count_win和goal_average如果第一个相等..我尝试替换$ scope.order_item像这样,但如果一个代码不工作,他永远不会工作与2 … $scope.order_item = ['count_win','goal_average']; 谢谢大家阅读和遗憾的职位大小。
$ scope.teams不是一个数组(它是一个对象的对象),orderBy过滤器只适用于数组。如果你使$ scope.teams数组,它将工作:
$scope.teams = [ { id: 100,name: "team1",count_win: 3,goal_average: 2,{ id: 200,name: "team2",{ id: 300,name: "team3",} ]; 或者,您可以添加对对象工作的特殊过滤器,像这样(从here借用): app.filter('orderObjectBy',function() { return function(items,field,reverse) { var filtered = []; angular.forEach(items,function(item) { filtered.push(item); }); filtered.sort(function (a,b) { return (a[field] > b[field] ? 1 : -1); }); if(reverse) filtered.reverse(); return filtered; }; }); 并使用它像这样: <tr ng-repeat="team in teams | orderObjectBy:order_item:order_reverse"> 请注意,此自定义过滤器将不会与排序顺序数组一起使用,如问题的第二部分所示。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |