gpt4 book ai didi

javascript - 将 Controller 与 Angular Scope 对象显式关联

转载 作者:行者123 更新时间:2023-11-30 17:38:48 25 4
gpt4 key购买 nike

来自 AngularJS 文档 Understanding controllers :

Associating Controllers with Angular Scope Objects

You can associate Controllers with scope objects implicitly via the ngController directive or $route service.

这两种方法众所周知,主要用于 AngurlaJS 应用程序。

引起我注意的是 Developer Guide / Understanding the Controller Component 中的这一部分:

Associating Controllers with Angular Scope Objects

You can associate controllers with scope objects explicitly via the scope.$new api or implicitly via the ngController directive or $route service.

因此,除了 Controller 与范围的隐式关联之外,还提到了使用 scope.$new api 的显式方式。

我知道 scope.$new 用于创建新的 [隔离] 范围,但我不明白它与 Controller 与范围的显式关联究竟有何关系。

很高兴看到一些实际用例和/或更详细的解释。

最佳答案

它主要用于测试期间,当您想直接构造一个 Controller 并用它做一些事情时。

您可以使用 $controller服务来做到这一点:

var scope = $rootScope.$new();
var ctrl = $controller(MyAwesomeController, { $scope: scope });

现在我可以直接操作 scope 变量并检查副作用:

scope.foo = 'bar'
scope.$digest();

expect(scope.bar).toBe('YEAH BABY!!!');

$controller service 将实例化一个 Controller ,并像您期望的那样注入(inject)所有依赖项。 它还允许您传入本地散列值,该散列值将使用您明确提供的内容覆盖任何依赖项。

同样,这对于测试非常有用,因为如果需要,您可以用模拟替换服务。

关于javascript - 将 Controller 与 Angular Scope 对象显式关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480732/

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