javascript - AngularJS 如何在 2 个或更多 Controller 中解析对 $scope 变量的调用?

标签 javascript angularjs

Here , 作者提到

the $scope object used by the two controllers are not the same $scope object

同样的片段:

enter image description here

enter image description here

现在考虑对上面的代码做一点修改。

<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>

对应于 controller2 的 View 已被移动到 controller1 的 View 中。

对于controller2里面的这段代码,

$scope.newTemp = $scope.temp;

enter image description here

Are $scope highlighted above one and the same object?

If yes, how does AngularJS know this?

如果它们相同,controller2 中的 $scope.temp 将是未定义的,那么 $scope.newTemp 会是未定义的吗?

对我而言,考虑到上述程序的o/p,它们并不相同。见下文:

enter image description here

但是,我很困惑为什么当我调试时它们都是一样的, enter image description here

AngularJS 如何从 controller2 中的 controller1 访问 $scope.temp 的值?
请说清楚?

最后,

enter image description here

最佳答案

虽然两个 Controller 中使用的$scope确实不一样,但它们可以继承彼此的属性。 Angular 的 $scope 就像一棵树,树干是 $rootScope 并且所有其他 $scope 分支都是那个或另一个 $ scope,因此由于您的 myController2myController1 的子级,您可以访问其中的变量。

$rootScope -> myController1 -> myController2

myController2 可以访问所有父 $scopemyController1 可以访问 $rootScope$rootScope 只能访问自己。

关于javascript - AngularJS 如何在 2 个或更多 Controller 中解析对 $scope 变量的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35308917/

相关文章:

javascript - 使用 Angular JS 指令时出错

javascript - 如何在 Jasmine + Angular 中测试与指令的isolateScope的双向绑定(bind)?

javascript - 在 AngularJS 中更新 iframe

javascript - 如何处理 JavaScript 中未定义的值

javascript - 监听 Javascript 中的函数结果

AngularJs 外部文件 Controller 和指令 : how to write them correctly?

javascript - React JS 中的 Angular JS ng-repeat 过滤器替代方案

javascript - Angular $http.query 使用数组作为参数?

Javascript 检索 json 和 POST

javascript - 标记一个元素时验证所需的复选框