0

我想知道是否有人可以帮助我,我一直在努力让一些东西工作一段时间,但几乎没有进展。我正在使用 angularjs 和 bootstrap 以及 adapt-strap,它基本上是一个基于 angular 和 bootstrap 的轻量级 ui 组件。为了尝试简化我的问题,我创建了一个现有小提琴的分支并稍微更改了代码。

http://jsfiddle.net/me397squ/3/

在上面链接的小提琴中,我使用了 adapt-strap 来创建和显示表格。对于模型列,我想根据特定条件隐藏/显示该列,因此我创建了一个名为 visibleProperty 的范围变量并将其设置为 true(jsfiddle 中的第 100 行)。然后我使用这个变量作为表的可见属性(第 108 行),如下所示。如果我最初将其设置为 true,则显示该列,如果我最初将其设置为 false,则隐藏该列。如你所料。

  $scope.carsTableColumnDefinition = [
  {
    columnHeaderDisplayName: 'Model',
    displayProperty: 'name',
    sortKey: 'name',
    columnSearchProperty: 'name',
    visible: $scope.visibleProperty
  },

我的问题是代码的后面部分更新了这个字段(第 149 行),说它最初设置为 true 并更改为 false,但是该列不会隐藏。它似乎只采用给定的初始值,并且当范围变量更改时,它没有任何区别。我已经通过在表的“模型列可见属性”列中输出它来确认范围变量正在按预期更改。

有什么方法可以在 $scope.visibleProperty 更新时隐藏/显示该列?这个问题开始让我发疯,我非常感谢你能提供的任何帮助。

谢谢。

4

1 回答 1

0

您应该将列定义绑定到函数而不是数组。这样,每次发生 $digest 循环时,都会执行该函数并更新表定义。

<ad-table-lite table-name="carsForSale"
             enable-column-search="true"
             column-definition="getCarsTableColumnDefinition()"
             ...

您的控制器将如下所示:

$scope.getCarsTableColumnDefinition = function() {
    return [
        {
            columnHeaderDisplayName: 'Model',
            displayProperty: 'name',
            sortKey: 'name',
            columnSearchProperty: 'name',
            visible: $scope.visibleProperty
        },
        ...];
};

重复:Adapt-strap/angular 动态表列

于 2018-01-05T18:54:41.533 回答