我正在使用orderBy使用Angular JS对数组进行排序。但它仍然没有按特定键排序。
这是代码
:
});
我计划根据"键"来查看排序。泰卢固语应该是第一位的,接下来的是英语,最后是印度语。
答案 0 :(得分:12)
你需要:
$scope.keys = $filter('orderBy')($scope.keys, 'key', false)
过滤器的顺序返回一个新数组,它不会对传递的数组进行更改。
答案 1 :(得分:1)
从html标记中删除OrderBy以显示无序列表:
<div ng-app="sortModule" class="nav">
<div ng-controller="MainController">
<button ng-click="sort()">Sort
</button>
<div></div>
<div >
<ul>
<li ng-repeat="lang in languages">
<span>{{lang.name}}</span>
</li>
</ul>
</div>
</div>
</div>
现在使用按钮排序对列表进行排序
var app = angular.module('sortModule', [])
app.controller('MainController', function($scope,$filter){
$scope.languages = [
{ name: 'English', image: '/images/english.png',key:2 },
{ name: 'Hindi', image: '/images/hindi.png',key:3 },
{ name: 'English', image: '/images/english.png',key:2},
{ name: 'Telugu', image: '/images/telugu.png',key:1 }];
var newLanguages = []
newLanguages = angular.copy($scope.languages);
$scope.sort = function(){
$scope.languages = []
$scope.keys = []
for(language in newLanguages) {
$scope.keys.push(newLanguages[language])
}
$scope.keys = $filter('orderBy')($scope.keys, 'key', false);
$scope.languages = $scope.keys;
console.log(JSON.stringify($scope.keys))
}
});