2013-05-09 18 views
30

私の配列はBSです。その構造は:orderByが期待通りに動作しない:Angularjs

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

BSは配列です。各値は、nameのfilededを持つ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

ことの一つは、あなたがで--- ''構文トラックを使用している場合、あなたのORDERBYが機能しなくなりますということを見ているがあります。 – dmackerman

+42

@dmackerman、 'by track by ---は常にフィルタの右側を含め、式全体の最後になければなりません。それで 'orderBy'は期待どおりに動作します。 – nilskp

+0

@nilskp、 'track by'がなぜ終わりでなければならないのかを示すドキュメントはありますか?私はなぜ 'track by 'が望ましくない振る舞いを引き起こすのであれば、終わり以外のどこかで許されているのだろうと思っています。 – adam0101

関連する問題