我正在开发一个新的Angular应用程序,我正在构建一个下拉导航。我目前正在使用Factory来返回控制器中的导航项数组,如下所示:
var sections = this.NavMenusFactory.sections;
菜单的结构如下:
我需要遍历数组并删除用户无权访问的任何项目,但也保留原始结构。这取决于当前用户和数组对象中的requiredPermissions
索引。
我可以访问lodash库,所以通过尝试过滤和删除功能一直在玩这个。没有什么比我需要的更准确。举一个快速举例说明我是如何做到的:
var sections = this.NavMenusFactory.sections;
this.dropdownNavItems = [];
forEach(sections, (section) => {
if (section.section === 'financials') {
this.dropdownNavItems = this.dropdownNavItems.concat(section.pages.filter(navitem => {
// console.log("section", navitem);
return !navitem.requiredPermissions || this.Permissions.parseAccessByValue(selectedVehicle, navitem.requiredPermissions);
}));
}
});
我无法像删除项目一样保留原始结构。我是Javascript的新手,所以非常感谢一些指导。
答案 0 :(得分:0)
您的代码对我来说是正确的,我建议您的问题实际上更可能是角度相关的问题。
假设您使用ng-repeat
来迭代所有结果,则可能是您的问题涉及ng-repeat
的“跟踪”部分。请参阅this part of the ng-repeat docs您可以尝试使用track by item.name或类似内容,看看是否能解决您的问题。