2013-05-09 97 views
30

我的排列是:BS。其結構是:orderBy按預期工作:Angularjs

Array[317] 
0: Object 
    $$hashKey: "022" 
    name: "Los Angeles Comm." 
. 
. 
. 
.. 

BS是一個數組。每個值都是具有名稱的JSon對象。

我想根據名稱對BS的所有值進行排序。我想:

<option ng-repeat="item in BS | orderBy:item.name" value="{{item.name}}">{{item.name}}</option> 

我自己也嘗試:orderBy:nameorderBy:item[name]。什麼都沒有爲什麼這不起作用,什麼是正確的代碼?

回答

79

低於HTML

<!DOCTYPE html> 
<html ng-app="app"> 
<head> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script> 
</head> 
<body> 
    <div ng-controller="item"> 
     <ul> 
      <li ng-repeat="item in items|orderBy:'name'"> 
       {{item.name}} 
      </li> 
     </ul> 
    </div> 
    <script> 
     var AppModule = angular.module('app', []); 
     function item($scope) { 
      $scope.items = [{ name: 'tur' }, { name: 'abc' }, { name: 'xyx' }]; 

     } 
    </script> 
</body> 
</html> 
+11

有一點要注意這裏的是,如果你使用'通過---'語法的軌道,你的排序依據將不再起作用看看。 – dmackerman 2013-09-27 03:56:52

+42

@dmackerman,'by by track'必須始終位於整個表達式的最後,包括過濾器的右側。然後'orderBy'按預期工作。 – nilskp 2014-03-11 18:45:04

+0

@nilskp,是否有任何文件說明爲什麼'追蹤'必須在最後?我想知道爲什麼'追蹤'可以在任何其他地方使用,除非最終導致不良行爲。 – adam0101 2014-05-15 21:58:57