【发布时间】:2019-03-12 09:29:24
【问题描述】:
我创建了一个 plunker,它解释了我想要实现的目标。 http://plnkr.co/edit/XAghimH20qwxQGjO42gP?p=preview
我有这个对象数组 $scope.menus
$scope.menus = [
{
name: 'Access',
submenu: [
{ name: 'User List'},
]
},
{
name: 'Organization',
submenu: [
{ name: 'City List'},
{ name: 'State List'},
{ name: 'Country List'},
]
},
{
name: 'Upload Logs',
submenu: [
{ name: 'Inventory Uploads'},
]
},
{
name: 'Bulk Logs',
submenu: [
{ name: 'Bulk Renewals'},
]
},
];
搜索到的外部菜单,例如Access或Organization,只返回搜索到的项。
但是当搜索内部菜单时,例如City List,结果我得到所有其他对象也包括City List。
我原本希望只收到City List。
我观察到,对于嵌套的对象数组,过滤器不起作用。
我可能错了。请指导我学习新的东西。
更新
@Vivek 解决方案有效。但现在我面临另一个问题。我在现有数组中添加了一些其他数组。
当我在搜索字段中键入 Bulk 或 upload 时,将出现子菜单。但是只要我输入第二个单词(例如Bulk logs 或upload logs),子菜单就会消失。
如果输入第一个字的时候就出现了,为什么输入第二个字就消失了。为什么会这样?
更新 谢谢大家的时间和回复。
【问题讨论】:
-
您的代码中有两个排他的过滤器,它们不相关,因此是它们自己数组中的纯模式匹配。我建议您从顶部 ng-repeat 中删除过滤器。
-
检查过了。如果我这样做了,所有的主菜单都会显示出来,如果有的话,还有搜索到的子菜单。如果没有找到子菜单,有没有办法隐藏上层菜单?
-
更新了答案,这可能适用于您的用例,看看吧。
标签: javascript angularjs filter angularjs-filter