在datatable AngularJS中使用if条件动态隐藏/显示列?

在datatable AngularJS中使用if条件动态隐藏/显示列?,angularjs,datatable,Angularjs,Datatable,我将使用datatable angularjs显示用户列表。我想有条件地隐藏显示列。假设角色在上,则最后一列不显示,角色为管理员,则显示最后一列。如何做到这一点我不知道任何人知道如何修复,请让我知道 这是我的控制器。js: app.controller("userscontroller", [ "$scope", "$http", "DTOptionsBuilder", "DTColumnBuilder", "userservice", "$compile",

我将使用datatable angularjs显示用户列表。我想有条件地隐藏显示列。假设角色在上,则最后一列不显示,角色为管理员,则显示最后一列。如何做到这一点我不知道任何人知道如何修复,请让我知道

这是我的控制器。js:

app.controller("userscontroller", [
  "$scope", 
  "$http", 
  "DTOptionsBuilder", 
  "DTColumnBuilder", 
  "userservice",
  "$compile",
  function ($scope, $http, DTOptionsBuilder, DTColumnBuilder, userservic, $compile) {       
    $scope.dtColumns = [            
     DTColumnBuilder.newColumn("fullName", "Full Name").withOption('name','firstname'),
     DTColumnBuilder.newColumn("username", "Name").withOption('name','username'),
     DTColumnBuilder.newColumn("email", "Email").withOption('name', 'email'), 
     DTColumnBuilder.newColumn(null).withTitle('Action').notSortable().renderWith(function (data, type, full, meta) {            
       return '<button class="btn btn-primary" ng-click="delete(' + data.id + ');"><i class="fa fa-eye"></i>' + '</button>';                    
     })          
    ]

    $scope.dtOptions = userservice.GetAllUser(DTOptionsBuilder)
    .withOption('processing', true)
    .withOption('serverSide', true)
    .withPaginationType('full_numbers')
    .withDisplayLength(50)
    .withOption('aaSorting', [3, 'desc'])

    function createdRow(row, data, dataIndex) {
     $compile(angular.element(row).contents())($scope);
    } 
  }
]);
app.controller(“用户控制器”[
“$scope”,
“$http”,
“DTOptionsBuilder”,
“DTColumnBuilder”,
“用户服务”,
“$compile”,
函数($scope,$http,DTOptionsBuilder,DTColumnBuilder,userservic,$compile){
$scope.dtColumns=[
DTColumnBuilder.newColumn(“全名”、“全名”)。带有选项('Name','firstname'),
DTColumnBuilder.newColumn(“用户名”、“名称”)。带有选项('Name','username'),
DTColumnBuilder.newColumn(“电子邮件”、“电子邮件”)。带有选项(“名称”、“电子邮件”),
DTColumnBuilder.newColumn(null).withTitle('Action').notSortable().renderWith(函数(数据、类型、完整、元){
返回“”+“”;
})          
]
$scope.dtOptions=userservice.GetAllUser(DTOptionsBuilder)
.withOption('processing',true)
.withOption('serverSide',true)
.withPaginationType('完整编号')
.带显示长度(50)
.withOption('aaSorting',[3',desc']))
函数createdRow(行、数据、数据索引){
$compile(angular.element(row.contents())($scope);
} 
}
]);

在这里我想如果(IsAdmin)那么显示删除列其他方式隐藏此列怎么办?

假设您的IsAdmin设置如下:

<script>window.__IS_ADMIN__ = <%=is_admin_from_server%></script>

通过这种(非常难看的)方式,您可以有条件地显示最后一列。

@julien TASSIN您知道如何修复它吗???isAdmin来自哪里?你是怎么做到的?isAdmin来自标签i m check中的布局,全局设置isAdmin true,这里我检查如果是,为什么不使用if(window.isAdmin){xxx}最后一个DTColumnBuilder.newColumn进行保护?你能做什么?请给我一个提示
app.controller("userscontroller", [
  "$scope", 
  "$http", 
  "DTOptionsBuilder", 
  "DTColumnBuilder", 
  "userservice",
  "$compile",
  function ($scope, $http, DTOptionsBuilder, DTColumnBuilder, userservic, $compile) {       
    $scope.dtColumns = [            
     DTColumnBuilder.newColumn("fullName", "Full Name").withOption('name','firstname'),
     DTColumnBuilder.newColumn("username", "Name").withOption('name','username'),
     DTColumnBuilder.newColumn("email", "Email").withOption('name', 'email')
    ]; 
    // Bad practise to call directly window we should use $window or better a service
    if(window.__IS_ADMIN__) {
      $scope.dtColumns.push(DTColumnBuilder.newColumn(null).withTitle('Action').notSortable().renderWith(function (data, type, full, meta) {            
         return '<button class="btn btn-primary" ng-click="delete(' + data.id + ');"><i class="fa fa-eye"></i>' + '</button>';                    
      }));     
    }     

    $scope.dtOptions = userservice.GetAllUser(DTOptionsBuilder)
    .withOption('processing', true)
    .withOption('serverSide', true)
    .withPaginationType('full_numbers')
    .withDisplayLength(50)
    .withOption('aaSorting', [3, 'desc'])

    function createdRow(row, data, dataIndex) {
     $compile(angular.element(row).contents())($scope);
    } 
  }
]);