巢狀控制器

巢狀控制器也連結了 $scope。更改巢狀控制器中的 $scope 變數會更改父控制器中的相同 $scope 變數。

.controller('parentController', function ($scope) {
    $scope.parentVariable = "I'm the parent";
});

.controller('childController', function ($scope) {
    $scope.childVariable = "I'm the child";

    $scope.childFunction = function () {
        $scope.parentVariable = "I'm overriding you";
    };
});

現在讓我們嘗試處理它們,巢狀。

<body ng-controller="parentController">
    What controller am I? {{parentVariable}}
    <div ng-controller="childController">
        What controller am I? {{childVariable}}
        <button ng-click="childFunction()"> Click me to override! </button>
    </div>
</body>

巢狀控制器可能有它的好處,但在這樣做時必須記住一件事。呼叫 ngController 指令會建立一個新的控制器例項 - 這通常會產生混淆和意外結果。