Simran Kaur
Simran Kaur

Reputation: 1101

ng-show hide based on return value by a function

$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 is an array of assigned permissions to the current user.

Forexample:

["Create", "Show", "Update", "Delete"]

or

["Create", "Show", "Update"]

or

["Update", "Show"]

So, in case my current user had only ["Update","Show"], It should not show ones with ShowHide('Create') but it does if I have ShowHide('Show') in any of the li elements and worked just fine if the li elements that called ShowHide has 'Create' as the required permission.In that case it would hide elements that required 'Create' permission. But it fails if I add Show as required permission in any of the rest li elements.

I call it like this:

<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>

It works fine when I use only 'Create' or'Show'in li elements. But all of them show up if I use ShowHide('Show') in any of the remaining li elements.

What seems wrong and how do I fix this?

Upvotes: 1

Views: 854

Answers (2)

Sander_P
Sander_P

Reputation: 1835

The first thing you should probably change is to add .name to your if statement:

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

Plz maken a http://jsfiddle.net/

Upvotes: 0

dhavalcengg
dhavalcengg

Reputation: 4713

change your function to following

$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;
}}

Upvotes: 1

Related Questions