2016-08-09 7 views
0

私は結果をその位置でフィルタリングしようとしています。orderBy:notarray予想される配列ですが、受信しました:オブジェクト

しかし、すぐにorderbyの結果が配列ではないので、ページを分割します。これをどうやって変更できますか?私はこれに固執しています。

私はそうのように、この操作を行います。

<div ng-repeat="cat in content | orderBy : 'pos'" class="animated zoomIn"> 

とコントローラ:

{ 
    "Bar One" : { 
    "bgurl" : "https://domain.com/aa/bars/list/bar.jpg", 
    "name" : "Bar One", 
    "subtitle" : "Cheers", 
    "pos", 2 

}, 
"Bar Two" : { 
    "bgurl" : "https://domain.com/aa/bars/list/bar.jpg", 
    "name" : "Bar Two", 
    "subtitle" : "Cheers", 
    "pos", 1 
} 

} 

、私はこのエラーを取得:

firebase.database().ref("v3/standalonelist/" + catId.toLowerCase()).on('value', function(snapshot) { 

    $timeout(function() { 
     $scope.content = snapshot.val(); 
     console.log($scope.content); 

    }) 

    }); 

の$ scope.contentは、このオブジェクトを返します

[orderBy:notarray] Expected array but received: [THE OBJECT ABOVE]

+0

エラーが真である、これはオブジェクトであります別のオブジェクトをラップします。あなたのコンテンツは以下のようになります:$ scope.content = [ { "bgurl": "https://domain.com/aa/bars/list/bar.jpg"、 "name": "Bar One" "サブタイトル"、 "乾杯"、 "POS"、2 }、{ "bgurl": "https://domain.com/aa/bars/list/bar.jpg"、 "名前" : "バー二"、 "字幕": "乾杯"、 "POS"、1 } ] – oguzhan00

答えて

0

モデルはオブジェクトではないため、(key, value) in experssion synatxを使用してください。

+0

ありがとうございました。例を挙げてください。 – olivier

+0

オブジェクトの中でプロパティを並べ替えるためには、 'orderBy'フィルタを使うことはできません。あなたの問題を解決するには、データ構造を変更してコレクションを提供するか、カスタムフィルターをオブジェクト内の順序プロパティにする必要があります。 –

1

1)カスタマイズされたフィルタ(AngularJS) ORDERBYオブジェクトプロパティの...

例JSON:

{ 
    "123": {"name": "Test B", "position": "2"}, 
    "456": {"name": "Test A", "position": "1"} 
} 

このリンクをお試しください...

orderBy filter for Object

2)ObjectプロパティのorderByフィルタを実現する別の方法。

  • データオブジェクトの配列を追加します。ビューで

$scope.dataArray = Object.keys($scope.data) .map(function(key) { return $scope.data[key]; });

<div ng-repeat="item in dataArray | orderBy:'order.allListPosition'"> 

http://plnkr.co/edit/BXgYPTElSM3sjvLg30CL?p=preview

関連する問題