我有一个类似ng-repeat =“(数据中的(键,值))的代码。在控制器中:
$scope.Dates = {"Today":"30", "This Week":"42", "This Month": "Oct", "This Quarter" : "Bad", "This Year" : 2013 }
和ng-repeat指令为
<div ng-repeat="(key,value) in Dates"> {{key}} ==> {{value}} </div>
输出按以下顺序排序
This Month ==> Oct This Quarter ==> Bad This Week ==> 42 This Year ==> 2013 Today ==> 30
如何摆脱这种排序(奇怪),因为我想在代码中使用键。。我检查了google group,但使用两个存储键值的数组有一个小提琴。http://jsfiddle.net/Saulzar/puhML/3/b。不想采用这种方法。
这是JavaScript而不是Angular的限制。
从ECMAScript第三版:
4.3.3对象是对象类型的成员。 它是 属性 的无序集合 ,每个属性都包含原始值,对象或函数。存储在对象属性中的函数称为方法。
来自ECMAScript语言规范
枚举属性[…]的顺序 未指定 。
Angular 明确地对对象键进行排序,以提供至少某种持久性行为。
解决方法 是遍历提取的密钥:
<div ng-repeat="key in keys(Dates)"> {{key}} ==> {{Dates[key]}} </div> $scope.keys = function(obj){ return obj? Object.keys(obj) : []; } $scope.Dates = { "Today":"30", "This Week":"42", "This Month": "Oct", "This Quarter" : "Bad", "This Year" : 2013 };