如果我有一组值:
[1,2,3,4,n / a,n / a,n / a]
如何使用orderBy创建自定义排序,以便字符串始终显示在底部?
升序示例:
[1,2,3,4,n / a,n / a,n / a]
降序示例:
[4,3,2,1,n / a,n / a,n / a]
我尝试过使用函数表达式,但这并不是我需要的。函数表达式只返回要排序的值,但如何使用自己的排序顺序?
答案 0 :(得分:4)
您可以创建一个自定义过滤器,根据需要对数组进行排序。
app.filter('customOrderBy', function () {
return function (arr) {
var numbers = [];
var strings = [];
angular.forEach(arr, function(item){
if(typeof item == 'number' ){
numbers.push(item);
}
else
strings.push(item);
});
return numbers.sort().concat(strings);
};
});
您阵列上的ng-repeat如下所示:
<div ng-repeat="item in array | customOrderBy track by $index">
请注意,我使用了&$ 39;跟踪$ index&#39;因为AngularJS ng-repeat指令不允许在转发器中重复。 (你的数组中有重复的#34; n / a&#34;字符串)
此处的Plunker按升序排序原始数组中的数字[2,3,1,4,&#39; n / a&#39;,&#39; n / a&#39;,&#39 ;不适用&#39;]:http://plnkr.co/edit/jmHly0lDb5IVeWd2XvHp?p=preview