AngularJS:按降序排序(空条目)

5
我正在使用 Angular JS 和 Google Places API 构建一个 Web 应用程序。
我有一个 ng-repeat,目前按照 "rating" 降序排序 (orderBy:'-rating')。因此,根据评分从 Google Places API 的 JSON 文件中列出了 X 个地点,并按照降序排列。
但是,没有评分的条目/地点被归类为 null,并且这些条目在我的 ng-repeat 源中显示在顶部。它们应该置于源的底部,因为它们没有评分。
以下是我希望它看起来的示例:
<ng-repeat orderBy:'-rating'>
  <place rating="5"/>
  <place rating="4.2"/>
  <place rating="2.8"/>
  <place rating="null"/>
  <place rating="null"/>
</ng-repeat>

这个问题该怎么解决才最好?

请查看此答案:https://dev59.com/8WMl5IYBdhLWcg3wMkgo#30028814 - DrinkBird
1个回答

10

使用orderBy过滤器对包含nullundefined值的数据进行排序,可以使用[]符号表示,例如:orderBy: ['!rating', '-rating']

这将会把nullundefined值放在最后面。

例如:

 <li ng-repeat="option in options | orderBy:[ '!rating', '-rating', ]">{{option.name}}</li>

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Dayle Salmon
它在页面加载时设置到作用域变量上是有效的。但是在我的选择框中似乎不起作用。我的代码如下:视图: <ng-repeat="orderBy:Events.order"/><select> <option value="['!rating', '-rating']">从高到低</option> </select> 控制器: vm.order = ['!rating','-rating']; - Dayle Salmon
你能更明确一下你想通过更新答案来实现什么吗? - Shaishab Roy
似乎底部也显示了0(零)。有没有办法在底部不包括这些? - Jeremy
1
这个解决方案对我有用,你也可以添加双感叹号来切换 null 或 undefined 的顺序:orderBy:['!!rating', '-rating']。我需要这个,但在这里找不到它。 - Luigi Cordoba Granera
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接