ng-show 和 ng-if 无法显示内容

ng-show and ng-if fail to display content

本文关键字:显示 ng-if ng-show      更新时间:2023-09-26

尝试构建一个简单的选项卡。 选项卡 0 中的内容按预期显示和隐藏,但是,选项卡 1 仅为空白,尽管单击选项卡 1 时范围更新为 true。

首先,控制器在包装器div 上启动:

<div ng-controller="AdvancedSettingsController as settings">

下面是控制器:

function AdvancedSettingsController($scope) {
    //setting tab name, and initial booleans
    $scope.tab = [
        {
            title : "Domains",
            active : true
        },
        { 
            title: "Locale",
            active : false 
        }
    ];
}

而 ng 点击侦听器:

AdvancedSettingsController.prototype.tabs = function (o) {
    //set both tab active booleans to false
    for (var i = 0; i <= $scope.tab.length - 1; i++) {
        $scope.tab[i].active = false;
    }
    //set active tab boolean to true
    $scope.tab[o].active = true;
}

现在,使用 ng-repeat 循环的选项卡对象 - settings.tabs($index) 正在将索引传递给上面的函数:

<li data-ng-repeat="tab in settings.tab">
   <a data-ng-click="settings.tabs($index)">
      {{tab.title}}
   </a>
</li>

内容保存在 2 个div 中,如果:

<div data-ng-if="settings.tab[0].active">
   Content 1, true by default. Hides and shows as nav is toggled.
</div>
<div data-ng-if="settings.tab[1].active">
   Content 2, false by default. Never shows as nav is toggled.
</div>

最后,Chrome 从不更新以下信息: ngIf: settings.tab[1].active

在您的 html 中,您正在尝试通过 settings.tab 和 settings.tabs 访问数据,但我看不到您在哪里定义该设置......

按照您在此处发布的代码,我创建了此解决方案:http://codepen.io/anon/pen/raMbGr

<li ng-repeat="t in tab">
  <a ng-click="tabs($index)">
    {{t.title}}
  </a>
</li>
<div ng-if="tab[0].active">
  Content 1, true by default. Hides and shows as nav is toggled.
</div>
<div ng-if="tab[1].active">
  Content 2, false by default. Never shows as nav is toggled.
</div>

我的问题的答案在这里并不明显,是我在第一个选项卡中有一个额外的结束div。它正在关闭ng-if,然后有破碎的标记。

我的代码看起来像这样:

<div ng-if="tab[0].active">
   <div>
      Content 1, true by default. Hides and shows as nav is toggled.
   </div>
   **</div>**
</div>
<div ng-if="tab[1].active">
  Content 2, false by default. Never shows as nav is toggled.
</div>

ng-if没有在正确的位置关闭 - 所以尽管$scope更新,html还是坏了。 所以,烦人。