我正在使用meanjs堆栈来编写Web应用程序。我需要向所有用户显示下拉菜单(登录或不登录),然后在用户登录时向下拉列表中添加更多元素。
例如,假设您有一个产品列表。您创建一个名为“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,这是相似但不完全相同的,也没有得到满意的回答。
要在角度中使用菜单服务,用户是否有必要登录?
答案 0 :(得分:2)
我刚刚阅读了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这是第237行中的Source Code,文档不对,或者这是一个错误。希望这对你有用。 :)
答案 1 :(得分:-1)
这对我有用
核心菜单服务中的
**替换
//定义一组默认角色
this.defaultRoles = ['user'];
与
this.defaultRoles = ['user','admin'];**
在文章配置中
主菜单
Menus.addMenuItem('topbar','Articles','articles','dropdown','/ articles(/ create)?',true,['admin']);
对于子菜单
Menus.addSubMenuItem('topbar','articles','New Article','articles / create','menuItemUIRoute',true,['admin']);