2014-05-02 117 views
1

我想將過濾器應用於JSON對象,但沒有多少運氣。AngularJS過濾器JSON對象{}不是一個對象數組

的數據結構是這樣的:

$scope.jsonObj = { 
    someid8979: { 
     name: "Bill", 
     age: 18 
    }, 
    someid987: { 
     name: "Ted", 
     age: 17 
    } 
} 

在我的HTML,這樣的事情:

<input ng-model="search"> 
<div ng-repeat="(key,val) in jsonObj | filter:search"> 
    {{key}} - {{val.name}} - {{val.age}} 
</div> 

在過去,我一直髮出的數據作爲對象的數組,事實上,如果我這樣做,它會工作,但由於應用程序的性質,這是不可能的,因爲我需要在代碼中的其他地方引用對象上的名稱(id)屬性。

有什麼辦法可以將過濾器應用於與此類似的JSON對象嗎?

我可以創建只用於過濾目的的獨立的陣列和目標對我的其他操作JSON對象,但我寧願不:)

編輯:我做了對象的副本作爲陣列循環,這允許過濾。這解決了我的問題,但不是我希望的方式。可能夠好。

+1

http://stackoverflow.com/questions/13887504/filtering-on-object-map-rather-than- array-in-angularjs – PSL

+0

是的,正如我所說的,它可以用一個數組來完成,我只是想知道是否可以用一個對象。謝謝,不過。 – Jazzy

+1

https://github.com/angular/angular.js/blob/master/src/ng/filter/filter.js#L118所以'filter'只適用於數組。 – dfsq

回答

0

你可以把比較器功能在您的控制器就像這個plunker:

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

+0

我的模型不是數組。內置的$ filter需要一個數組。我只是好奇,如果有一個解決方案,可以使用一個對象。不是數組。 {}與[]。 – Jazzy