是否有一种简单,优雅的方式来按照惯常的顺序排列数组,但将任何缺失值视为0
(或任意任意设置的值)而不是undefined
?是否有`orderBy`过滤器功能允许它正确处理可选属性?
例如所以,下面的代码
<li ng-repeat="item in items | orderBy:['-optionalKey', 'secondaryKey']">{{ item.secondaryKey }}</li>
与像
$scope.items = [
{secondaryKey: 75, optionalKey: 25},
{secondaryKey: 100},
{secondaryKey: 50, optionalKey: 0},
];
数据集中会产生这种
<li>75</li>
<li>50</li>
<li>100</li>
,而不是这个
<li>100</li>
<li>75</li>
<li>50</li>
?
播放用在这里:http://plnkr.co/edit/G3nQyEzHfUiiovJTD44Y?p=preview
我知道我可以重新实现整个orderBy
过滤器,但是这不是很维护或面向未来。我也可以在常规的orderBy
过滤器中使用函数作为谓词,但是我仍然必须将已经内置的复杂参数重新实现到orderBy
(例如,深度嵌套,+
/-
反转等)。什么我真的不知道是如果有一些语法,我不知道,让我做这样的事情:
<li ng-repeat="item in items | orderBy:['-optionalKey', 'secondaryKey']:false:0">{{ item.secondaryKey }}</li>
...其中第三个参数(0
)代表我想falsy治疗价值/丢失键为。
深键嵌套版本:http://plnkr.co/edit/xE03dyAWLMr7oqjIs3rw?p=preview – 2014-11-26 17:17:07