2014-12-25 2 views
1

Я хотел бы, чтобы ChildCtrl был инициализирован только при нажатии кнопки над ним. как это возможно?AngularJS: Как динамически инициализировать контроллер в шаблоне из другого контроллера

<div ng-controller="ParentCtrl"> 
    <button>CLICK TO INIT CHILD CTRL</button> 
    <div class="child-container"> 
     <div ng-controller="ChildCtrl" ng-include="'templates/child.html'" /> 
    </div> 
</div> 

ответ

3

Это легко, использование нг-если:

<div ng-controller="ParentCtrl"> 
    <button ng-click='loadChild=true'>CLICK TO INIT CHILD CTRL</button> 
    <div class="child-container" ng-if='loadChild'> 
     <div ng-controller="ChildCtrl" ng-include="'templates/child.html'" /> 
    </div> 
</div> 

ng-if директива не загружает DOM, если выражение не является true.

+0

Спасибо! не думал об этом –

+0

@YossiShasho помнить, что 'ng-if' создает изолированную область. Если 'ParentCtrl' добавил' thing' в свою область, то теперь это обращение к '$ parent.thing' в' ChildCtrl.scope' из-за 'ng-if'. – cgTag

+0

Я знаю, вот что я сделал. благодаря! –

Смежные вопросы