Множественные Именованные Представления + Уничтожить $ scope

0

Если я использую состояние с несколькими видами, как я могу уничтожить одну из областей просмотра? Я попробовал следующее, и это не сработало:

<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
    Можете ли вы дать немного больше информации / возможно punkr? Когда вы говорите, что сфера еще существует, что вы имеете в виду? Значения, установленные в дочернем состоянии, сохранятся в родительском состоянии, если не будут переопределены, независимо от уничтожения родительского элемента дочерних состояний. Также - какую версию Angular и Ui-Router вы используете?
  • 0
    Я соберу плунжер прямо сейчас. И я не ссылаюсь на значения, установленные в дочернем состоянии ... Я согласен с вашими чувствами там. То, что я говорю, это установка ng-if в false, по-видимому, не разрушает область видимости пользовательского интерфейса. Я полагаю, что это совсем другая область, которая не связана с областью действия ng-if, поэтому я пытаюсь выяснить, каким образом установка значения ng-if в false уничтожит себя и его квазидискретную область «фильтров». Угловая версия 1.2.27 и Ui-Router 0.2.15
Показать ещё 1 комментарий
Теги:
angular-ui-router

1 ответ

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню