2014-05-02 118 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