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
可见时,我只需要 parentController
和 child1Controller
控制器 运行ning。与第二个 div 可见时相同,parentController
和 child1Controller
控制器应该只有一个 运行ning.
如果我没记错的话,使用 ng-if
而不是 ng-show
应该可以解决您的问题。不同之处在于 ng-if
在评估为 false 时不会将元素呈现给 DOM。
我有这个代码
.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
可见时,我只需要 parentController
和 child1Controller
控制器 运行ning。与第二个 div 可见时相同,parentController
和 child1Controller
控制器应该只有一个 运行ning.
如果我没记错的话,使用 ng-if
而不是 ng-show
应该可以解决您的问题。不同之处在于 ng-if
在评估为 false 时不会将元素呈现给 DOM。