我想通過AngularJS過濾器對對象進行排序。但使用我的自定義過濾器時發生無限$摘要錯誤。
我想製作下列語言列表。該列表按語言名稱排序。
- 阿爾巴尼亞
- 阿拉伯語
- 荷蘭
- 英語
- 古吉拉特
- 希伯來語立陶宛
- 俄羅斯
- 斯洛伐克
- 烏爾都語
以下是HTML。
<!DOCTYPE html>
<html lang="ja" ng-app="MYAPP">
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script src="app.js"></script>
<title>Sort Object</title>
</head>
<body>
<div ng-controller="languagesCtrl">
<ul>
<li ng-repeat="language in languages | objectOrderBy:'name'">
{{language.value.name}}
</li>
</ul>
</div>
</body>
</html>
以下是AngularJS代碼。
angular.module('MYAPP', []).
filter('objectOrderBy', function(){
return function(obj, prop){
var array = [];
for(var key in obj){
array.push({
key: key,
value: obj[key]
});
}
return array.sort(function(o1, o2){
return (o1.value[prop] > o2.value[prop])? 1: -1;
});
};
}).
controller('languagesCtrl', ["$scope", function($scope){
$scope.languages = {
"sq": {
"name": "Albanian"
},
"ar": {
"name": "Arabic"
},
"nl": {
"name": "Dutch"
},
"en": {
"name": "English",
},
"gu": {
"name": "Gujarati"
},
"he": {
"name": "Hebrew"
},
"lt": {
"name": "Lithuanian"
},
"ru": {
"name": "Russian"
},
"sk": {
"name": "Slovak"
},
"ur": {
"name": "Urdu"
}
};
}]);
$ scope.languages的結構無法更改,因爲這實際上由API服務器提供。爲什麼會發生錯誤?請告訴我如何解決問題。
你應該創建一個js小提琴。 – bencripps 2014-10-20 13:29:12