Javascript 将控制器与角度范围对象显式关联

Javascript 将控制器与角度范围对象显式关联,javascript,angularjs,scope,Javascript,Angularjs,Scope,从AngularJS文档中: 将控制器与角度范围对象关联 您可以通过 ngController指令或$route服务 这两种方法是众所周知的,主要用于AngurlaJS应用程序 引起我注意的是这部分内容: 将控制器与角度范围对象关联 您可以通过显式地将控制器与作用域对象关联 作用域。$newapi或通过ngController指令或$route隐式 服务 因此,除了控制器与作用域的隐式关联外,还提到了使用scope.$newapi的显式方法 我知道作用域。$new用于创建新的[隔离]作用域,但不

从AngularJS文档中:

将控制器与角度范围对象关联 您可以通过 ngController指令或$route服务

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

引起我注意的是这部分内容:

将控制器与角度范围对象关联 您可以通过显式地将控制器与作用域对象关联 作用域。$newapi或通过ngController指令或$route隐式 服务

因此,除了控制器与作用域的隐式关联外,还提到了使用scope.$newapi的显式方法

我知道作用域。$new用于创建新的[隔离]作用域,但不知何故,我不明白它与控制器与作用域的显式关联到底有什么关系


如果能看到一些实际的用例和/或更详细的解释,那就太好了。

当您想要直接构造控制器并使用它做一些事情时,它主要在测试期间使用

您可以使用该服务执行以下操作:

var scope = $rootScope.$new();
var ctrl = $controller(MyAwesomeController, { $scope: scope });
现在我可以直接操作
scope
变量并检查副作用:

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

expect(scope.bar).toBe('YEAH BABY!!!');
服务将实例化一个控制器,并像您预期的那样注入所有依赖项它还允许您传入一个局部变量散列,该散列将用您显式提供的内容覆盖任何依赖项。


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

现在一切都有意义了。太好了+1.