我有一个数组如下(问题简化的数据):
var myArray = ['Text 1', 'Text 9', 'Text 10'];
可以理解的是,常规的Angular orderBy在应用时产生以下内容:
Text 1
Text 10
Text 9
我正在寻找一种最优雅的方式来编写一个自定义orderBy函数,该函数将产生:
Text 1
Text 9
Text 10
谢谢!
答案 0 :(得分:0)
取决于您可能拥有的数据。如果它只能是'测试x',其中x是数字:
<div ng-repeat="obj in data | orderBy: ['length', 'toString()'] track by $index ">{{obj}}</div>
答案 1 :(得分:0)
您应该为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>