javascript - Angular JS 阻止 Controller 在隐藏元素上运行

标签 javascript angularjs angular-controller

我有这个代码

.state('fooState', {
    url: '/foo',
    templateUrl: 'path/to/bar.html',
    controller:'parentController'
})

// THIS IS THE bar.html
<div class="sample">
    <div ng-show="bazinga" ng-controller="child1Controller">
        <!-- cool stuff -->
    </div>
    <div ng-show="!bazinga" ng-controller="child2Controller">
        <!-- cool stuff -->
    </div>
</div>

当显示带有 Controller child1Controller的第一个div时, Controller child2Controller也会运行,这是否正常?如果通过 ng-show="false" 隐藏 Controller ,我该如何防止它运行?我只需要在第一个 div 可见时运行 parentControllerchild1Controller Controller 。与第二个 div 可见时相同,parentControllerchild1Controller Controller 应该只有一个正在运行。

最佳答案

如果我没记错的话,使用 ng-if 而不是 ng-show 应该可以解决您的问题。不同之处在于 ng-if 在计算结果为 false 时不会将元素呈现给 DOM。

关于javascript - Angular JS 阻止 Controller 在隐藏元素上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34818993/

相关文章:

javascript - 从 DOM 获取值并传递给函数

angularjs - 错误 : spyOn could not find an object to spy upon for login()

angularjs - 从不同的模块访问指令

javascript - 在两个 Controller 之间共享数据angularjs

javascript - 如何获取具有相同类名的div内的子元素

javascript - jQuery UI Datepicker onSelect 清除输入的值

javascript - 更改指令中的范围值

javascript - 如何使用复选框来过滤 Angular 的结果?

javascript - 如何使用jquery注入(inject)带有 Angular Directive(指令)的html元素?

javascript - AngularJS Controller 中定义的 JS 函数不起作用