Angularjs 下一步中的订单项目重复项目的follow属性

Angularjs 下一步中的订单项目重复项目的follow属性,angularjs,angularjs-scope,angularjs-ng-repeat,angularjs-orderby,Angularjs,Angularjs Scope,Angularjs Ng Repeat,Angularjs Orderby,如何将帖子排序为自上而下的结构(拥有最高喜欢度编号的帖子将排在第一位,而拥有最低喜欢度编号的帖子将排在最后一位)。为此,我设置了oderBy:likes.length,但它不起作用。请帮忙,谢谢 function MyController($scope) { $scope.posts = [{"title": "AAtitle", "content":"AAcontent", "li

如何将帖子排序为自上而下的结构(拥有最高
喜欢度
编号的帖子将排在第一位,而拥有最低
喜欢度
编号的帖子将排在最后一位)。为此,我设置了
oderBy:likes.length
,但它不起作用。请帮忙,谢谢

 function MyController($scope) {
        $scope.posts = [{"title": "AAtitle",
                        "content":"AAcontent",
                        "likes":["person1", "person2", "person3"]
                       },
                       {"title": "BBtitle",
                        "content":"BBcontent",
                        "likes":["person10"]
                       },
                        {"title": "CCtitle",
                        "content":"CCcontent",
                        "likes":["person10","person11", "person100", "person1", "person2"]
                       }
                      ]
    }

    <div ng-controller = "MyController">
      <ul>
        <li ng-repeat = "post in posts | oderBy: likes.length">
               <div> {{post.title}} </div>
               <div> {{post.content}} </div>
               <div> {{post.likes.length}} </div>
        </li>
      </ul>
    </div>
函数MyController($scope){
$scope.posts=[{“title”:“AAtitle”,
“内容”:“AAcontent”,
“喜欢”:[“person1”、“person2”、“person3”]
},
{“标题”:“BBtitle”,
“内容”:“BBcontent”,
“喜欢”:[“person10”]
},
{“标题”:“CCtitle”,
“内容”:“内容”,
“喜欢”:[“person10”、“person11”、“person100”、“person1”、“person2”]
}
]
}
  • {{post.title} {{post.content} {{post.likes.length}

在视图中显示之前,您可以编写一个函数在控制器中进行排序。或者,您可以编写一个自定义过滤器

过滤器:

angular.module('YourAppName', [])
.filter('orderByLikes', function() {
    function compare(a, b) {
        return b.likes.length - a.likes.length;
    }
    return function (input) {
        return input.sort(compare);
    }
}); 
视图:


  • {{post.title} {{post.content} {{post.likes.length}

这是一份工作报告

非常感谢!,非常有用我在将此筛选器应用于我的项目时遇到此错误
TypeError:cannotcallmethod“sort”of undefined
。是否有关于
输入的注意事项
?将行
  • 更改为
  • 。它在JSFIDLE上工作,没有显式地将
    posts
    传递给过滤器,因此我认为它也应该适用于您。告诉我它是否解决了问题,以便我可以更新答案。干杯
    <div ng-controller = "MyController">
      <ul>
        <li ng-repeat = "post in posts | orderByLikes:posts">
               <div> {{post.title}} </div>
               <div> {{post.content}} </div>
               <div> {{post.likes.length}} </div>
        </li>
      </ul>
    </div>