6

私のfirebaseの現在のデータの束は次のようになります:

{"-JZ7b":{"name":"bob","has":"slack"},"-JZ7a":{"name":"connie","has":"slack"}}

次のようなものを使用する場合:

<ul><li ng-repeat="(key, person) in people |orderBy 'name'"></li></ul>

私は得る:

  • -JZ7a コニーにはたるみがあります
  • ・JZ7bボブはたるみあり

ここにフィドルがあります

データを他の形式に変更せずに、期待される orderBy を取得する最良の方法は何ですか? この例では、キーに意味があるとは限りませんが、意味があると仮定してください。カスタム ディレクティブを作成するというアイデアは興味深いオプションのように思えますが、私のコードは元のコードに比べて少しぎくしゃくしている可能性があります。

4

3 に答える 3

5

orderByPriorityオブジェクトを配列に変換してからfirebase、通常のフィルターと orderBy を適用するために使用できます。

 <ul>
   <li ng-repeat="person in people | orderByPriority | orderBy: 'name'">
     <span>{{ person.$id }} </span>
   </li>
 </ul>

https://www.firebase.com/docs/angular/reference.html#orderbypriorityを参照してくださいorderbypriority

于 2014-02-16T16:45:56.667 に答える
2

機能しないオブジェクトをフィルタリングしようとしているようです。

AngularJS の配列ではなくオブジェクト マップでのフィルタリング

データの形式を制御できる場合、Angular のベスト プラクティスは次のとおりです。

var objs = [
{ name : 'Whatever' , has : 'value' , etc : 'etc' },
{ name : 'Whatever' , has : 'value' , etc : 'etc' },
{ name : 'Whatever' , has : 'value' , etc : 'etc' }
]
<div ng-repeat="obj in objs | orderBy : name">...
于 2013-11-07T19:34:48.300 に答える