ng-show表示多重值

时间:2016-12-01 09:41:13

标签: javascript html css angularjs

这是我的表

 <table class="table table-bordered table-responsive table-hover add-lineheight table_scroll">
        <thead>
            <tr>
                <th ng-hide="hidecolumn == key" ng-repeat="(key, value) in localNew[0]">
                    {{key}}
                </th>
            </tr>
      </thead>
      <tbody>
            <tr ng-repeat="test in localNew">
                <td ng-hide="hidecolumn == key" ng-repeat="(key, value) in test">
                    {{value}}
                </td>
            </tr>
        </tbody>
    </table>

这里hidecolumn将隐藏我不希望显示的列 例如在我的控制器中

这是我的数据

$scope.localNew = [{ 'name': 'name1', 'age': 24, "salary": 2500, "s": 5 }, { 'name': 'name2', 'age': 26, "salary": 2600, "s": 5 }];

这是我的隐藏列变量

$scope.hidecolumn = "salary";

这很好用

现在我的问题是,我想要隐藏多个列 所以我的范围变量就像

$scope.hidecolumn = "name,salary";

那么如何在我的html表中管理这个以隐藏多列,即多个隐藏值???如果你还没有得到我的问题让我知道我会添加一个plunker.Thanku

7 个答案:

答案 0 :(得分:2)

您可以使用Array及其indexOf方法:

$scope.hidecolumn = [ "name", "salary" ];

//查看

<td ng-hide="hidecolumn.indexOf(key) !== -1" ng-repeat="(key, value) in test">
  {{value}}
</td>

答案 1 :(得分:2)

您应该使用数组而不是字符串:

$scope.hidecolumns = ['name', 'salary'];

以及检查当前列是否应该隐藏的函数:

$scope.shouldHideColumn = function(column) {
  if ($scope.hidecolumns.indexOf(column.salary)) {
    return true;
  }

  return false;
};

然后在HTML

<th ng-hide="shouldHideColumn(value)" ng-repeat="(key, value) in localNew[0]">
  {{key}}
</th>

答案 2 :(得分:1)

您也可以这样做:

<td ng-hide="hidecolumn.indexOf(key) !== -1" ng-repeat="(key, value) in test">
    {{value}}
</td>

答案 3 :(得分:0)

你试过这个:

<td ng-repeat="(key, value) in test" ng-hide="key === 'name' || key === 'salary'">
  {{value}}
</td>

答案 4 :(得分:0)

您可以调用以下函数:

ng-hide="hidecolumn(key)"

JS

  var hideColumn = function(key) {
    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    if (fruits.indexOf(key)) === 0 return false;
  }

ng-hide将隐藏&#39;如果函数返回true,则返回元素。

答案 5 :(得分:0)

indexOf工作得很好但是如果你想在其他地方重复相同的方法,你可能想要在这样的全局空间中为数组创建一个contains方法:

Array.prototype.contains = function contains(obj) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === obj) {
            return true;
        }
    }
    return false;
};

然后创建你的数组:

$scope.hiddencolumns = [ "name", "salary" ];

然后你可以这样使用:

<td ng-hide="hiddencolumns.contains(key)" ng-repeat="(key, value) in test">
    {{value}}
</td>

要将逗号分隔的字符串转换为数组,请使用以下命令:

var array = $scope.hidecolumn.split(',');

答案 6 :(得分:0)

谢天谢地,我刚把我的字符串转换为数组var array = string.split(','); 得到了理想的结果,谢谢你的帮助