加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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">

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读