我有一个应用程序,可以在其中显示带有 AngularJS 的项目列表。我正在尝试在此列表上进行简单搜索,但它会搜索该项目内的所有内容。一个项目的例子:
{
id: 283727893,
name: 'Item A',
parent: {
id: 239495838,
name: 'Item B'
},
user: 'User C'
}
在列表中我只写了根项目的名称,所以parent.name
不会出现。
问题
但是,如果我使用 AngularJS 过滤器按“项目 B”进行搜索,它仍然会出现,因为内部属性具有此字符串。
我试过的
我已经放置了一个对象引用,如下所示(val
输入的文本在哪里):
vm.searchObj = {
name: val,
user: val
};
然后,在我的 DOM 上:
<li data-ng-repeat="[...] | filter: Ctrl.searchObj | orderBy: Ctrl.orderBy">
...
</li>
但是,这适用于条件 AND,所以它只显示如果两者都有,name
并且user
有val
。
我需要的
我想获取输入文本并进行搜索以根据给定的对象属性(复数形式)过滤此列表。
所以,在这个例子中,如果我写“项目 A”或“用户 C”(或者只是“A”或只是“C”等等),这个项目应该出现,但如果我写“B”,则不会出现,因为没有name
并user
有这封信。
在这种情况下,我需要它来获取参考对象,Ctrl.searchObj
并检查对象的任何给定属性是否包含val
在过滤对象的相同结构中。
当然,这应该在对象的更深层次上起作用,所以我可以定义searchObj
如下,并且仍然能够得到过滤后的对象内部是否具有该结构:
vm.searchObj = {
parent: {
name: 'Item'
}
};
在这种情况下,它应该显示其parent.name
属性包含单词“Item”的那些项目。
如果您需要更多信息,请告诉我!
谢谢!