为什么不能在具有隔离作用域的指令的模板中访问$rootScope?

21 浏览
0 Comments

为什么不能在具有隔离作用域的指令的模板中访问$rootScope?

使用隔离作用域,指令的模板似乎无法访问控制器('Ctrl')的$rootScope变量,但是在指令的控制器中是可见的。我明白为什么隔离作用域中的控制器('Ctrl')的$scope变量不可见。

HTML:

        
    

JavaScript:

angular.module('app', [])
    .controller('Ctrl', function Ctrl1($scope,  $rootScope) {
        $rootScope.blah = 'Hello';
        $scope.yah = 'World'
    })
    .directive('myTemplate', function() {
        return {
            restrict: 'E',
            templateUrl: 'my-template.html',
            scope: {},
            controller: ["$scope", "$rootScope", function($scope, $rootScope) {
                console.log($rootScope.blah);
                console.log($scope.yah);
                $scope.test = function(arg) {
                    console.log(arg);
                }
            }]
        };
    });

JSFiddle

通过注释隔离作用域行可以访问该变量,如下所示:

        // scope: {},

0