指令控制器与module.controller

时间:2014-12-27 04:26:47

标签: angularjs

我在角度指令中工作了一段时间,现在,我出了问题。

可以在指令中定义的 module.controller controller 之间有什么不同?

angular.module().controller()

angular.module().directive(function(){
   return {
     controller:
   }
});

两者的定义似乎相同。

另一个问题是,我是否会为指令控制器指定由 angular.module().controller() 定义的控制器?

2 个答案:

答案 0 :(得分:2)

基本上这两个控制器的功能基本相同,只是它们所作用的范围不同。该指令定义的控制器的范围仅适用于元素&该元素的子元素,其中已应用该指令。而模块定义的控制器作用于使用ng-controller定义控制器的所有元素的范围。

指令还可以使用angular.module()定义的控制器。这是使用指令中的controller键实现的,并将模块控制器的名称作为字符串提供。

查看this example

答案 1 :(得分:0)

模块控制器用于初始化托管页面上的范围。托管页面上的范围依赖于父子关系中的原型范围继承。

指令控制器用于初始化指令范围的范围,该范围可以是以下两种类型之一:

   1. Isolated scope
   2. Child scope (prototypical)

它们的相似之处在于两种控制器都用于范围的初始化。它们的不同之处在于每个都初始化它们各自的范围:模块控制器初始化页面范围,指令控制器初始化指令的范围。

模块控制器中的逻辑通常是特定于应用程序的,但指令控制器中的逻辑通常与应用程序无关。指令旨在可重用,但应用程序控制器不是。

相关问题