2017-04-15 88 views

回答

1

ng-repeat爲對象{}本身不提供與順序顯示(在大多數情況下的元件具有順序,但不是在100%) - 在對象的情況下,關鍵是String,所以他們被排序爲字符串(["1", "11", "2"]) - 但JS根本不保留{}的順序,所以即使它們以任意順序顯示,總有一天它可能會沒有任何大的原因(瀏覽器更新等)而中斷。只需使用排序的數組,其中排序更多自然(鍵是number),請檢查Codepen:https://codepen.io/anon/pen/mmJyGX或使用orderBy並附加字段,如id。我的建議是,如果您關心訂單,請始終使用[]而不是{},因爲它始終會按預期工作。

1

使用最近版本的angular(例如1.6.0),它不會發生。 您使用舊版本(1.1.5),似乎這個版本默認排序數組。

2

在您的JS(上代碼筆),你必須:

$scope.persons = {}; 
for (var i = 0; i < 20; i++) { 
    console.log(i); 
    $scope.persons[i] = i; 
} 

你正在發起persons爲對象。更改爲$scope.persons = [];

2
var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 

    $scope.persons = []; 
    for (var i = 0; i < 20; i++) { 
      console.log(i); 
      $scope.persons[i] = i; 
     $scope.results = angular.toJson($scope.persons) 
     } 

    //$scope.persons = [1, 2, 3, 4, 5]; 
}); 

https://codepen.io/anon/pen/rmVaZV?editors=1111