Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在datatable AngularJS中有条件地隐藏/显示列?_Javascript_Angularjs_Angular Datatables - Fatal编程技术网

Javascript 在datatable AngularJS中有条件地隐藏/显示列?

Javascript 在datatable AngularJS中有条件地隐藏/显示列?,javascript,angularjs,angular-datatables,Javascript,Angularjs,Angular Datatables,我将使用datatable angularjs显示用户列表。我想有条件地隐藏显示列。假设角色在上,则最后一列不显示,角色为管理员,则显示最后一列。如何做到这一点我不知道任何人知道如何做到这一点,请让我知道 这是我的controller.js: app.controller(“userscontroller”、[“$scope”、“$http”、“DTOptionsBuilder”、“DTColumnBuilder”、“userservice”、“$compile” 函数($scope,$http

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

这是我的controller.js:
app.controller(“userscontroller”、[“$scope”、“$http”、“DTOptionsBuilder”、“DTColumnBuilder”、“userservice”、“$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(angle.element(row.contents())($scope);
} }]);
在这里我想如果(IsAdmin)然后显示删除列其他方式隐藏此列怎么办?

您可以尝试以下操作:

if(user.configName == 'Admin'){
               return '<button class="btn btn-primary" ng-click="delete(' + data.id + ');"><i class="fa fa-eye"></i>' + '</button>';
            }
if(user.configName==“Admin”){
返回“”+“”;
}
您可以使用以下功能:

if(user.configName == 'Admin') 
{
    vm.dtColumnDefs = [
            DTColumnDefBuilder.newColumnDef(0),
            DTColumnDefBuilder.newColumnDef(1),
            DTColumnDefBuilder.newColumnDef(2).notSortable()
        ];
}
else {
vm.dtColumnDefs = [
            DTColumnDefBuilder.newColumnDef(0),
            DTColumnDefBuilder.newColumnDef(1).notVisible(),
            DTColumnDefBuilder.newColumnDef(2).notSortable()
        ];
}

在上面的代码中,notVisible()方法用于隐藏表中的第二列。用这个,,您可以为特定的用户角色使列可见和隐藏。

@lin您知道如何做到这一点吗?当您定义$scope.dtColumns时,是否可以使用
if
语句来排除isAdmin为false时要隐藏的列?您想说什么?我不明白,您能给我一个答案吗隐藏按钮不是隐藏列我想隐藏整个列任何标识如何检查条件?在这一波中,我想检查整个动作的条件,所以如果你知道,请编辑你的答案,请给你任何其他方式,我不会在js中重复这个类型代码。需要减少代码,所以任何其他方法都可以,那么请让我知道您可以尝试在dtColumnDefs中为第1列使用三值运算符
if(user.configName == 'Admin') 
{
    vm.dtColumnDefs = [
            DTColumnDefBuilder.newColumnDef(0),
            DTColumnDefBuilder.newColumnDef(1),
            DTColumnDefBuilder.newColumnDef(2).notSortable()
        ];
}
else {
vm.dtColumnDefs = [
            DTColumnDefBuilder.newColumnDef(0),
            DTColumnDefBuilder.newColumnDef(1).notVisible(),
            DTColumnDefBuilder.newColumnDef(2).notSortable()
        ];
}