Использование контроллера внутри другого контроллера в AngularJS
почему я не могу привязаться к переменной контроллера внутри второго контроллера?
<div ng-app="ManagerApp">
<div ng-controller="MainCtrl">
Main:
<div ng-repeat="state in states">
{{state}}
</div>
<div ng-controller="InsideCtrl as inside">
Inside:
<div ng-repeat="state in inside.states2">
{{state}}
</div>
</div>
</div>
</div>
var angularApp = angular.module('ManagerApp', []);
angularApp.controller('MainCtrl', ['$scope', function ($scope) {
$scope.states = ["NY", "CA", "WA"];
}]);
angularApp.controller('InsideCtrl', ['$scope', function ($scope) {
$scope.states2 = ["NY", "CA", "WA"];
}]);
пример:https://jsfiddle.net/nukRe/135/
второй ng-повтор не работает.
3 ответов
как вы используете controllerAs
вы должны использовать this
ключевое слово в контроллер
angularApp.controller('InsideCtrl', [ function() {
var vm = this;
vm.states2 = ["NY", "CA", "WA"];
}]);
Примечание
технически вы должны следовать одному подходу за раз. Не путай. это два шаблона вместе, либо используйте
controllerAs
синтаксис/ нормальный объявление контроллера, как вы сделали дляMainCtrl
используя$scope
удалить
внутри
отсюда:
<div ng-controller="InsideCtrl as inside">
такие, что:
`<div ng-controller="InsideCtrl">`
<div ng-app="ManagerApp">
<div ng-controller="MainCtrl">
Main:
<div ng-repeat="state in states">
{{state}}
</div>
<div ng-controller="InsideCtrl">
Inside:
<div ng-repeat="state in states2">
{{state}}
</div>
</div>
</div>
</div>