AngularJS如何解析对2个或更多控制器中$ scope的变量的调用?

Shi*_*han 13 javascript angularjs

在这里,作者提到

the $scope object used by the two controllers are not the same $scope object
Run Code Online (Sandbox Code Playgroud)

相同的片段:

在此输入图像描述

在此输入图像描述

现在考虑对上面的代码进行一些修改.

<body ng-app="myapp">
    <div ng-controller="myController1">

        <div>{{data.theVar}}</div>
        <div>{{data.common}}</div>

        <div ng-controller="myController2">
            <div>{{data.theVar}}</div>
            <div>{{data.common}}</div>
            <div>{{temp}}</div>
            <div>{{newTemp}}</div>
        </div>

    </div>
    <script>
        var module = angular.module("myapp", []);
        var myController1 = module.controller("myController1", function($scope) {
            $scope.data = { 
                theVar : "Value One",
                common : "common Value"
            };

            $scope.temp = "John Wick 2 is going to be released soon";
        });

        var myController2 = module.controller("myController2", function($scope) {
            $scope.data = { 
                theVar : "Value Two"
            };

            $scope.newTemp = $scope.temp;
            console.log("");

        });
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

对应于controller2的视图已在controller1的视图内移动.

对于controller2中的这段代码,

$scope.newTemp = $scope.temp;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

$ scope是否突出显示在同一个对象上面?

如果是,AngularJS如何知道这一点?

如果它们是相同的,$scope.temp在控制器2中将是未定义的,那么$scope.newTemp呢?

对我来说,考虑到上述计划的o/p,它们并不相同.见下文:

在此输入图像描述

但是,当我调试时,我很困惑为什么它们都是一样的, 在此输入图像描述

AngularJS如何$scope.temp在controller2中访问controller1的值?
请澄清?

最后,

在此输入图像描述

Mar*_*ker 10

确实,$scope两个控制器中使用的不一样,它们可以继承彼此的属性.Angular的$scopes就像一棵树,树干是那个或那个的$rootScope所有其他$scope分支$scope,所以既然你myController2是孩子,myController1你可以访问它中的变量.

$rootScope -> myController1 -> myController2
Run Code Online (Sandbox Code Playgroud)

myController2可以访问所有的父母$scope秒,myController1即可访问$rootScope$rootScope只能访问本身.

  • 确实如此,但它在`__proto__`里面 (3认同)
  • 规则的例外是如果使用隔离范围 - 在这些情况下,范围将*不*从父范围继承(但将从rootScope继承). (2认同)