我有以下虚构对象,我正在尝试过滤:
{
"0":{
"boy":{
"age":"32",
"name":"Daniel Grey"
}
},
"1":{
"boy":{
"age":"23",
"name":"John Doe"
}
}
}
然后,ng-repeat指令看起来像这样:
<ul>
<li ng-repeat="person in people">{{person.boy.name}}<li>
</ul>
我的问题是,如何按“名字”过滤人物?我试过了:
<input type="text" ng-model="name">
<ul>
<li ng-repeat="person in people | filter:name">{{person.boy.name}}<li>
</ul>
...但没有任何反应[ng-model似乎与视图断开连接! ]
非常感谢任何回复!
谢谢!
答案 0 :(得分:1)
根据OP的更新更新了答案
查看您的fiddle,您的$scope.people
本质上是一个包含一个大JSON对象的数组,其中包含多个嵌套boy
个对象。这很难处理。如果您可以控制JSON对象的构造,我建议转换为多个JSON对象的数组,这可能看起来像:
$scope.people = [
{
"name":"Daniel Grey",
"age":"32",
"gender": "male"
},
{
"name":"John Doe",
"age":"23",
"gender": "male"
}
];
注意我是如何将boy
密钥转换为gender
属性的。
如果您真的无法控制数据结构,则可能需要提供自定义过滤器来解析嵌套结构。
看看这个fiddle。有几点需要注意:
people[0]
中指定ng-repeat
来检索数组中的一个大JSON对象。nameFilter
仅搜索.boy.name
属性。原始答案
如果您希望按 名称进行过滤,则必须在ng-model
指令中指定特定属性。所以在你的情况下,它将是
<input type="text" ng-model="search.boy.name">
<ul>
<li ng-repeat="person in people | filter:search">{{person.boy.name}}<li>
</ul>
但首先您需要修复JSON
对象。
更新:
fiddle上的现场演示。我注意到,仅按名称搜索过滤器不适用于angularjs 1.2.1,但适用于angularjs 1.2.2。