我在角度指令中工作了一段时间,现在,我出了问题。
可以在指令中定义的 module.controller
和 controller
之间有什么不同?
angular.module().controller()
angular.module().directive(function(){
return {
controller:
}
});
两者的定义似乎相同。
另一个问题是,我是否会为指令控制器指定由 angular.module().controller()
定义的控制器?
答案 0 :(得分:2)
基本上这两个控制器的功能基本相同,只是它们所作用的范围不同。该指令定义的控制器的范围仅适用于元素&该元素的子元素,其中已应用该指令。而模块定义的控制器作用于使用ng-controller
定义控制器的所有元素的范围。
指令还可以使用angular.module()定义的控制器。这是使用指令中的controller
键实现的,并将模块控制器的名称作为字符串提供。
查看this example。
答案 1 :(得分:0)
模块控制器用于初始化托管页面上的范围。托管页面上的范围依赖于父子关系中的原型范围继承。
指令控制器用于初始化指令范围的范围,该范围可以是以下两种类型之一:
1. Isolated scope
2. Child scope (prototypical)
它们的相似之处在于两种控制器都用于范围的初始化。它们的不同之处在于每个都初始化它们各自的范围:模块控制器初始化页面范围,指令控制器初始化指令的范围。
模块控制器中的逻辑通常是特定于应用程序的,但指令控制器中的逻辑通常与应用程序无关。指令旨在可重用,但应用程序控制器不是。