控制器与指令之间的区别和何时使用?

时间:2015-07-17 16:59:08

标签: angularjs

我很难理解控制器的用途是什么。我知道这是你引用的东西,但是因为你可以将它放在一个指令中,是否有一种情况你需要在你的html中使用ng-controller来代替特定部分,而不是创建一个内置控制器的指令在?

1 个答案:

答案 0 :(得分:11)

  

是否有一种情况需要将ng-controller用于html中的特定部分,而不是创建内置控制器的指令?

是的,绝对是的。

  • 当目标是操纵 DOM时使用指令。
  • 如果要创建可重复使用的组件,请使用指令。
  • 当您需要将绑定值添加到DOM时,使用控制器。

对于这两种方法中的任何一种,可能还有其他一百种情况,但我相信这应该足以证明使用另一种方法是合理的。

至于两者之间的差异,请看@yvesmancera已经指出的问题(angularjs-directives-vs-controllers)。

  

在Angular中,Controller由JavaScript构造函数定义,该函数用于扩充Angular Scope。

     

当Controller通过ng-controller指令附加到DOM时,Angular将使用指定的Controller的构造函数实例化一个新的Controller对象。将创建一个新的子范围,并将其作为$ scope的构造函数的可注入参数提供。

  

在较高级别,指令是DOM元素上的标记(例如属性,元素名称,注释或CSS类),它告诉AngularJS的HTML编译器($ compile)将指定的行为附加到该DOM元素甚至转换DOM元素及其子元素。