2番目のコントローラー内のコントローラーの変数にバインドできないのはなぜですか?
<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/
2番目のng-repeatは機能しません。
controllerAs
を使用しているので、コントローラーでthis
キーワードを使用する必要があります
angularApp.controller('InsideCtrl', [ function() {
var vm = this;
vm.states2 = ["NY", "CA", "WA"];
}]);
[〜#〜]注[〜#〜]
技術的には、一度に1つのアプローチに従う必要があります。この2つのパターンを混同しないでください。
$scope
を使用してcontrollerAs
に対して行ったように、MainCtrl
構文/通常のコントローラー宣言を使用してください。
削除する
中のように
ここから:
<div ng-controller="InsideCtrl as inside">
そのような:
`<div ng-controller="InsideCtrl">`