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

问题描述 投票:0回答:2

我正在使用 Angular JS 和 Google Places API 来构建一个 Web 应用程序。

我有一个 ng-repeat,目前正在按“评级”降序排序(orderBy:'- rating')。因此,它将根据评分按降序列出 Google Places API JSON 文件中的 x 个地点。

但是,没有评级的项目/地点被归类为空,这些条目显示在我的 ng-repeat feed 的顶部。这些应该放在 feed 的底部,因为它们没有评级?

所以我希望它看起来如何的一个例子是:

<ng-repeat orderBy:'-rating'>
  <place rating="5"/>
  <place rating="4.2"/>
  <place rating="2.8"/>
  <place rating="null"/>
  <place rating="null"/>
</ng-repeat>

解决这个问题的最佳方法是什么?

javascript angularjs angularjs-ng-repeat angularjs-orderby
2个回答
10
投票

要使用

null
过滤器按
undefined
orderBy
值进行排序。使用
[]
表示法
orderBy:[ '!rating', '-rating', ]

底部将显示

null
undefined
值。

喜欢:

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

0
投票

作为已批准答案的补充,以防万一有人需要它:

如果您希望only null 值到达底部,您可以使用:

orderBy: [ 'rating === null', '-rating' ]

对于除 0 之外的所有虚假值,您可以执行以下操作:
orderBy: [ 'rating !== 0 && !rating', '-rating' ]

这解决了我的问题,希望对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.