Angularjs OrderBy对ng-repeat不工作

前端之家收集整理的这篇文章主要介绍了Angularjs OrderBy对ng-repeat不工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使用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">

请注意,此自定义过滤器将不会与排序顺序数组一起使用,如问题的第二部分所示。

猜你在找的Angularjs相关文章