6

Почему я не могу привязываться к переменной контроллера внутри второго контроллера?Использование контроллера внутри другого контроллера в 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/

вторых нг-повтора не работает.

ответ

3

Как вы используете controllerAs вы должны использовать ключевое слово this в контроллере

angularApp.controller('InsideCtrl', [ function() { 
    var vm = this; 
    vm.states2 = ["NY", "CA", "WA"]; 
}]); 

Forked Fiddle

NOTE

Технически вы должны следовать один подход за один раз. Не перепутать это два шаблона вместе, либо использовать controllerAs синтаксис/Normal декларации контроллера, как вы делали для MainCtrl используя $scope

+2

Если кто-то наткнуться на этот ответ, это правильно, но, видимо, только начиная с угловыми 1.2.1. В скрипте OP есть Угловой 1.1.1, а Pankaj - 1.2.1. Принял мне 15 минут «почему это изменение не работает», чтобы понять это. – ToddK

0

Удалить

, как внутри

здесь :

<div ng-controller="InsideCtrl as inside"> , что:

`<div ng-controller="InsideCtrl">` 
-1
<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> 
+1

Добро пожаловать в переполнение стека! Пожалуйста, объясните * почему * это работает, сейчас это нестандартный ответ. – Glorfindel

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