2015-08-24 4 views
0

Я действительно не думаю, что могу прояснить гораздо больше, чем у меня уже есть в названии, это довольно самоописательный вопрос.Как получить доступ к области контроллера из дважды или трижды вложенной области ng-repeat?

Скажем, у меня есть эта структура:

<div ng-repeat="type in types"> 
    <div ng-repeat="subtype in type.subtypes"> 
    <div ng-repeat="item in subtype.items"> 
     <span>How to access Controller scope here?</span> 
    </div> 
    </div> 
</div> 

Внутри диапазона, как можно получить доступ к исходной сферы на контроллере?

В Knockout, вы можете сделать где i однако многие прицелы вы хотите сделать шаг назад вверх. Я не видел ссылку, что быть возможно с Угловым.

Должен ли я называть $parent.$parent.$parent?

+2

Объекты 'ngRepeat' наследуют от своего родителя, поэтому вы можете получать доступ к облачным свойствам на любом уровне. – Phil

+0

Что произойдет, если у вас конфликтующие свойства в разных областях? Который выбирается? – ReactingToAngularVues

+1

Внутренний, очевидно, – Phil

ответ

2

Действительно ли мне нужно позвонить $parent.$parent.$parent?

№:

<div ng-repeat="type in types"> 
    <div ng-repeat="subtype in type.subtypes"> 
    <div ng-repeat="item in subtype.items"> 
     {{type}} {{subtype}} {{item}} 
    </div> 
    </div> 
</div> 

Все они не наследуют от объема верхнего уровня.

Если вы беспокоитесь о конфликтующих пространств имен, проверка на controllerAs синтаксис:

<div ng-controller="ParentCtrl as parent"> 
    {{parent.property}} 
    <div ng-controller="ChildCtrl as child"> 
    {{parent.property}} 
    {{child.property}} 
    </div> 
</div> 

Что произойдет, если у вас есть противоречивые свойства в различных областях? Который выбирается?

Один на самом низком уровне.

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