2017-08-24 47 views
0

我有一个按钮只能用于“管理员”类型的用户。因此,我验证了登录系统的用户的权限组,并确定是否显示/ hdie按钮。所以我尝试,ng-if/ng-show/ng-hide,没有任何工作......我作为监视器登录,并且按钮不可用。控制器内的HIde按钮里面的列定义

我的代码:

app.controller('OrganizationsController',['$rootScope', '$scope', '$modal', 'HelperService', 'AuthService', '$state', '$http', function ($rootScope, $scope, $modal, HelperService, AuthService, $state, $http) { 
     var controllerScope = $scope; 

     controllerScope.organizationsData = {}; 
     controllerScope.organizationsData.ajax = {url:'/api/organizations/', dataSrc:''}; 
     controllerScope.organizationsData.ajax.beforeSend = function (xhr) { 
      xhr.setRequestHeader("Authorization", AuthService.authToken()); 
     } 

     controllerScope.permissionGroup=$rootScope.permissions.group_name; 

     controllerScope.organizationsData.columns = [ 
      {"data":null,"render":function(data) { 
       return '<a href="/#/organization/'+data.id+'">'+data.data.name+'</a>'; 
      }}, 
      {"data":"domain","defaultContent":""}, 
      {"data":null, "orderable":false, "render":function(data){ 
       return '<button class="btn btn-default btn-sm" style="margin-right:5px;" ng-if="controllerScope.permissionGroup.indexOf(\'Administrator\')!==-1" onclick="angular.element(this).scope().openOrganizationPermissionsSettings(\''+data.id+'\')"><i class="fa fa-wrench"></i></button>' 
       +'<button class="btn btn-default btn-sm" style="margin-right:5px; " onclick=\'angular.element(this).scope().openNewOrganizationModal('+JSON.stringify(data)+')\'><i class="fa fa-pencil"></i></button>' 
       +'<button class="btn btn-default btn-sm" onclick="angular.element(this).scope().deleteOrganization(\''+data.id+'\')"><i class="fa fa-trash"></i></button>'; 
      }}]; 


     controllerScope.deleteOrganization = function (organizationId) { 
      HelperService.deleteItem(organizationId, 'organization', '/api/organizations/'); 
     }; 

所以最重要的线路有:

controllerScope.permissionGroup=$rootScope.permissions.group_name返回 “监视器”

<button class="btn btn-default btn-sm" style="margin-right:5px;" 
     data-if="controllerScope.permissionGroup.indexOf(\'Administrator\')!==-1" onclick="angular.element(this).scope().openOrganizationPermissionsSettings(\''+data.id+'\')"> 
    <i class="fa fa-wrench"></i></button>' 

,我创建按钮和管理其知名度。

现在按钮始终可用作为上面的图像。

enter image description here

回答

0

您使用data-ng-hide指令,所以你不能只是追加DOM元素而不会$compile它。角没有关于变更的想法和消化周期上不听你的新创建data-ng-hide


作为一个边注:请不要使用onclick,使用ng-click


一些基本的例子:

var el = angular.element(
      '<button class="btn btn-default btn-sm" ng-click="foo()" ng-show="someCondition"></button>' 
      ); 

    el = $compile(el)($scope); 
    var warapper = document.querySelector('#warapper'); 
    angular.element(warapper).append(el); 
+0

只要使用ng-if?如何使用$ compile? –

+0

@AndréBastos根本没有,所有的角度指令应编译 –

+0

对我来说很简单,使用ng-if ..如何用ng-if做到这一点?例如..如果我使用ng-.click onclick事件不弹出,而不是onclick它的工作... –