$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
- это массив назначенных разрешений для текущего пользователя.ng-show hide на основе возвращаемого значения функцией
Forexample:
[ "Создать", "Показать", "Обновление", "Удалить"]
или
[ "Создать", "Показать", "Update"]
или
[ "Update", "Показать"]
Таким образом, в случае, если мой текущий пользователь имел только [ "Up date "," Show "]. Он не должен показывать те, что показаны ShowHide ('Create'), но это происходит, если у меня есть ShowHide ('Show') в любом из элементов li и отлично работает, если элементы li, которые вызвали ShowHide, «Создать» в качестве необходимого разрешения. В этом случае он будет скрывать элементы, требующие разрешения «Создать». Но он терпит неудачу, если я добавлю Show в качестве необходимого разрешения в любой из остальных элементов li.
Я называю это так:
<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>
Он отлично работает, когда я использую только 'Создать' элементы Li or'Show'in. Но все они появляются, если я использую ShowHide('Show')
в любом из оставшихся элементов li.
Что кажется неправильным и как я могу это исправить?
Показать 'userpermissions' (или '$ scope.userpermissions'?) ... Подробнее,' $ scope.checkbit' должен лучше быть локальной переменной области ('var checkbit'), в противном случае это значение будет сохраняться amon g, и, если вы не установите его на '0' при запуске, это будет проблемой ... – MarcoS