多个命名视图+销毁$ scope

时间:2015-11-30 20:24:09

标签: angularjs angular-ui-router

如果我使用的是具有多个视图的状态,我该如何销毁其中一个视图的范围?我尝试了以下内容,但没有奏效:

<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的范围。我很感激帮助。

1 个答案:

答案 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从父控制器执行此操作。