ng-show hide基于函数

时间:2015-08-04 06:36:37

标签: angularjs

$scope.checkbit = undefined;
$scope.showHide = function(permissionrequired){
 for(var i=0; i< userpermissions.length; i++){
  console.log(userpermissions[i].name);
  if(userpermissions[i]=== permissionrequired)
         $scope.checkbit = 1;
 }
return $scope.checkbit;
}}

$scope.userpermissions是为当前用户分配的权限数组。

Forexample:

[“创建”,“显示”,“更新”,“删除”]

[“创建”,“显示”,“更新”]

[“更新”,“显示”]

因此,如果我的当前用户只有[“更新”,“显示”],它不应该显示具有ShowHide('Create')但是如果我在任何一个中有ShowHide('Show') li元素并且如果调用ShowHide的li元素具有'Create'作为所需权限,则工作正常。在这种情况下,它将隐藏需要'Create'权限的元素。但如果我在任何其余的li元素中添加Show as required权限,它就会失败。

我称之为:

<ul class="nav navbar-nav">
    <li><a href="#" ng-click="navMode = 'createUser'" ng-show="showHide('Create')" ><strong>Create User</strong></a></li>
    <li><a href="#" ng-click="navMode = 'getUser'" ><strong>Get Users</strong></a></li>
    <li><a href="#" ng-click="navMode = 'createRole'" ng-show="showHide('Create')" ><strong>Create Role</strong></a></li>
    <li><a href="#" ng-click="navMode = 'getRole'"><strong>Get Roles</strong></a></li>
    <li><a href="#" ng-click="navMode = 'createPermission'" ng-show="showHide('Create')" ><strong>Create Permission</strong></a></li>
    <li><a href="#" ng-click="navMode = 'getPermission'"><strong>Get Permissions</strong></a></li>

 </ul>

当我仅使用“创建”或“how”元素时,它工作正常。但是如果我在任何剩余的li元素中使用ShowHide('Show'),它们都会显示出来。

出现什么问题以及如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

将您的功能更改为以下

$scope.showHide = function(permissionrequired){
 var checkbit = 0;
 for(var i=0; i< userpermissions.length; i++){
  console.log(userpermissions[i].name);

  if(userpermissions[i]=== permissionrequired)
         checkbit = 1;
 }
return checkbit;
}}

答案 1 :(得分:0)

您应该更改的第一件事是将.name添加到您的if语句中:

if(userpermissions[i].name=== permissionrequired)

Plz maken a http://jsfiddle.net/