我有一个如下数组(针对问题简化了数据):
var myArray = ['Text 1', 'Text 9', 'Text 10'];
可以理解,应用常规 Angular orderBy 会产生以下结果:
Text 1
Text 10
Text 9
我正在寻找最优雅的方法来编写自定义 orderBy 函数,该函数将生成:
Text 1
Text 9
Text 10
谢谢!
最佳答案
您应该为 orderBy 过滤器编写自定义表达式,如下所示:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.myArray = ['Text 1', 'Text 9', 'Text 10'];
$scope.myExpression = function(item) {
var words = item.split(' ');
return parseInt(words[1]);
};
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="MyCtrl">
<ul ng-repeat="item in myArray | orderBy:myExpression">
<li>{{item}}</li>
</ul>
</div>
关于javascript - Angular 自定义 orderBy 结合了字母和数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30122830/