我正在使用 meanjs堆栈来编写一个网络应用程序。我需要向所有用户(登录或未登录)显示下拉菜单,然后在用户登录时向下拉菜单添加更多元素。
例如,假设您有一个产品列表。您创建了一个名为“Products”的下拉菜单,其中包含元素“List products”。无论用户是否登录,都会出现此“列出产品”元素。如果用户已登录,则在名为“编辑库存”的下拉列表中显示另一个元素。
meanjs 网站说堆栈使用了 "AngularJS Menus Service"并列出了一些文档,但我找不到有关此服务使用情况的更多信息。链接文档提到了可选参数 isPublic
和 roles
,但是当我尝试使用它们时,没有任何效果。
代码 Menus.addMenuItem('topbar', 'Bios', 'bios', 'dropdown', '/bios(/create)?');
仅在用户已登录。
它与 Menus.addMenuItem('topbar', 'Bios', 'bios', 'dropdown', '/bios(/create)?', true); 具有相同的效果;
。可选的 isPublic
参数似乎没有什么区别。我做错了什么?
我找到了 this question ,相似但不完全相同,也没有得到令人满意的回答。
要使用 Angular 的菜单服务,用户是否需要登录?
最佳答案
刚刚看了meanjs MenuService源码,这是addMenuItem:
this.addMenuItem = function (menuId, menuItemTitle, menuItemURL, menuItemType, menuItemUIRoute, isPublic, roles) {
// Validate that the menu exists
this.validateMenuExistance(menuId);
// Push new menu item
this.menus[menuId].items.push({
title: menuItemTitle,
link: menuItemURL,
menuItemType: menuItemType || 'item',
menuItemClass: menuItemType,
uiRoute: menuItemUIRoute || '/' + menuItemURL,
isPublic: isPublic || this.menus[menuId].isPublic,
roles: roles || this.defaultRoles,
items: [],
shouldRender: shouldRender
});
// Return the menu object
return this.menus[menuId];
};
从这段代码中,如果你想重置 isPublic
,你应该用 menuItemUIRoute
和 isPublic
调用 func。
因为如果您没有传递 menuItemUIRoute
。参数会混淆。
P.S 这是 Source Code在第 237 行,文档不正确或者这是一个错误。希望这对你有用。 :)
关于javascript - 如何根据用户在angularjs中的角色显示不同的菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24501074/