如果我使用的是具有多个视图的状态,我该如何销毁其中一个视图的范围?我尝试了以下内容,但没有奏效:
<div ng-if='showFilters' ui-view="filters"></div>
<div ui-view="tabledata"></div>
<div ui-view="graph"></div>
即使$ scope.showFilters设置为false,“过滤器”视图的范围仍然存在。我想知道ng-if是否只是破坏了它的子范围,但不知道ui-view的范围。我很感激帮助。
答案 0 :(得分:0)
我建议使用视图层次结构,这样您就可以轻松破坏任何“子”视图的范围:
.state('parent', {
controller: "parentController as parent",
templateUrl: '../parent.html'
})
.state('child1', {
controller: "child1Controller",
templateUrl: '../child1.html'
})
.state('child2', {
controller: "child2Controller",
templateUrl: '../child2.html'
})
请注意,除非您愿意,否则不必使用“parent.child2”(嵌套状态)。关键是子范围将继承父范围,只要它们在父范围的html框架内,例如:
<div ui-view="parent">
<div ui-view="child1"></div>
<div ui-view="child2"></div>
</div>
然后,从孩子们那里,您可以简单地引用类似{{parent.filters.filter1}}
的内容,如果需要销毁范围,可以使用this.filters = undefined
从父控制器执行此操作。