gpt4 book ai didi

javascript - Angular 作用域为所有模块和 Controller 共享

转载 作者:行者123 更新时间:2023-11-29 17:14:39 24 4
gpt4 key购买 nike

我有一个单页应用程序,它有一个根模块和大约 5 个独立的小模块。

var rootModule = angular.module('root', ["firstModule", "secondModule", "thirdModule"])

每个模块都有指令和 Controller 。今天我发现我可以从所有其他模块和 Controller 访问其他模块和 Controller 范围。

例如这个 Controller :

thirdModule.controller('ThirdController', ['$scope', function ($scope) {
alert($scope.title);
}

在这个 Controller 中,我提醒变量并且它起作用了。

firstModule.controller('FirstController', ['$scope', function ($scope) {
$scope.title = "Hello"
}

基本上我使用 ng-app="root" 启动我的应用程序。一切都共享范围是正常的,还是我的设置有问题?

我认为模块给我代码分离,而 Controller 是具有新作用域的单例。

最佳答案

没有看到 HTML 很难,但我猜你的 Controller 嵌套在 html 中?像这样的东西:

<div ng-controller="FirstController">
<div ng-controller="ThirdController">
</div>
</div>

Controller 在嵌套时使用原型(prototype)继承。 child 继承自 parent 并可以访问其范围。因此,在这种情况下,ThirdController 将能够从 FirstController 访问作用域。如果他们在 sibling 而不是嵌套的地方,那么 ThirdController 将无法访问 FirstController。

这非常有用,但是如果您不知道这种继承是如何工作的,那么您可能会陷入一些陷阱,尤其是当涉及到继承对象和继承原语之间的区别时(这当我开始使用 Angular 时,我一直很困惑)。

如果你愿意,我可以写更多关于它的内容,这确实是正在发生的事情,或者你可以查看这个答案以了解更多关于原型(prototype)继承的信息:What are the nuances of scope prototypal / prototypical inheritance in AngularJS?

该视频还演示了对象和基元在继承时的区别:http://www.youtube.com/watch?v=DTx23w4z6Kc&feature=player_embedded

关于javascript - Angular 作用域为所有模块和 Controller 共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com