Если я использую состояние с несколькими видами, как я могу уничтожить одну из областей просмотра? Я попробовал следующее, и это не сработало:
<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. Я ценю помощь.
Я бы рекомендовал использовать иерархию представлений, чтобы вы могли легко уничтожить область любого "детского" представления:
.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
.