如果有条件地在数据表AngularJS中动态地隐藏/显示列?

问题描述:

我使用datatable angularjs显示用户列表。我想隐藏显示列使用有条件。假设角色是onther然后最后一列是不显示和角色是管理员然后显示这最后column.how可以做到这一点,我不知道任何人知道如何解决它请让我知道。如果有条件地在数据表AngularJS中动态地隐藏/显示列?

这是我controller.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); 
    } 
    } 
]); 

在这里,我想如果(IsAdmin)然后显示删除列其他明智隐藏此栏该怎么办?

+0

@ julien TASSIN有关这个如何解决它的任何想法? – coderwill

+0

Admin从哪里来?你如何布置它? –

+0

isAdmin来自

让我们假设你的isAdmin设置像这样:

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

您将在window.__IS_ADMIN__有一个布尔值,它会告诉你,如果连接的用户是管理员。 在你的控制器,你可以检查这样的:

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); 
    } 
    } 
]); 

有了你可以有最后一列的conditionnal显示这(很丑陋)的方式。

+0

感谢帮助 – coderwill