2015-01-22 2 views
1

Допустим, у нас есть вид AngularJS с отношением основных деталей. , например. детали заказа и заказа.Как инициализировать вложенный контроллер в AngularJS?

И мы предполагаем, что данные выдаются с использованием ng-repeat над order.details. , например.

<div ng-repeat="detail in orderCtl.order.details" 
    ng-controller="detailController as detailCtl"> 

Я знаю, что я могу принести $scope.detail когда detailController инициализируется.

/* initcontroller */ 
function($scope) { 
     console.log($scope.detail); //<-- this is the active item 
} 

Но, что чувствует, как взломать, так как мне нужно знать, в контроллере, что имя переменной нг-повтор, в этом случае detail

Есть ли другой способ получить активный элемент из повторитель в контроллере init?

Если кто-то изменит имя переменной ng-repeat с detail на что-то другое, контроллер перестанет работать должным образом.

+0

Можете ли вы привести пример (в коде)? В настоящее время вопрос неясен. –

ответ

3

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

Вы можете сделать это очень легко

<div ng-repeat="detail in orderCtl.order.details" 
ng-controller="detailController as detailCtl" ng-init="myVarname= detail"> 

<div ng-repeat="historydetails in orderCtl.historyorder.details" 
ng-controller="detailController as detailCtl" ng-init="myVarname= historydetails "> 

и не забудьте использовать myVarname в detailController. Конечно, это не идеально, потому что вы должны помнить, что detailController требует myVarname для работы.

+0

@ Пабло Де Надай, нет, я хотел бы поблагодарить вас, я даже не заметил, что я так плохо использовал английский – szapio