Angular JS 阻止控制器在隐藏元素上 运行

Angular JS prevent controller from running on hidden element

我有这个代码

.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>

第一个div控制器child1Controller出现时,控制器child2Controller也会运行正常吗?如果通过 ng-show="false" 隐藏了控制器,我如何防止它被 运行ning?当第一个 div 可见时,我只需要 parentControllerchild1Controller 控制器 运行ning。与第二个 div 可见时相同,parentControllerchild1Controller 控制器应该只有一个 运行ning.

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