首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有当用户在angularjs中有特定角色时才加载html部件。

只有当用户在angularjs中有特定角色时才加载html部件。
EN

Stack Overflow用户
提问于 2016-12-22 16:00:14
回答 2查看 198关注 0票数 0

目前,我的所有用户都是在我的应用程序中构建的,如下所示:

代码语言:javascript
复制
{
 id: 1,
 name: 'John Doe',
 roles: [{name: 'owner'}, {name: 'admin'}, {name: 'client'}]
} 

我的应用程序中有一个仪表板,它应该只向具有特定角色的用户显示应用程序的部分内容。让我们说,只有所有者应该能够创建或删除一些东西。我可以在html中这样做,只让管理员和所有者能够看到html的片段吗?因此,我给出了当前用户的角色,并告诉他应该为该按钮提供哪些角色。

代码语言:javascript
复制
<button
   class="btn btn-danger"
   permission="vm.user.roles | {'admin', 'owner'}"
   Delete
</button>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-22 16:07:48

如果条件为false,ng-if将从DOM中删除该元素。

代码语言:javascript
复制
<button class="btn btn-danger" ng-if="vm.hasRole('admin') || vm.hasRole('owner')">
   Delete
</button>

如果您只想隐藏元素而不是删除它,则可以使用ng-show

在您的控制器中:

代码语言:javascript
复制
$scope.hasRole = function(roleName) {
    return user.roles.filter(function(role) {
        return role.name === roleName;
    }).length > 0;
}
票数 1
EN

Stack Overflow用户

发布于 2016-12-22 16:05:59

使用数组中的函数indexOf来查找元素是否是数组的一部分。如果找到,它将返回元素的位置,或者返回-1。

所以您可以使用如下表达式

代码语言:javascript
复制
<button
   class="btn btn-danger"
   ng-show = "['admin', 'owner'].indexOf(roles)!=-1">
   Delete
</button>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41287154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档