【问题标题】:Difference between and when to use controllers vs directives?控制器与指令的区别以及何时使用?
【发布时间】:2015-07-17 16:59:07
【问题描述】:

我很难理解控制器的用途是什么。我知道这是您引用事物的方式,但是由于您可以将其放入指令中,因此是否存在过一种情况,您希望将 ng-controller 用于 html 中的特定部分,而不是创建具有内置控制器的指令在?

【问题讨论】:

  • 好问题!在 Angular 2.0 中,ng-controller 被移除,只支持使用附加到指令的控制器。 MVC 中的控制器是模型和服务之间的“粘合剂”,因此您可以使用更清洁的代码库来摆脱“粘合剂”。服务应处理获取和存储数据并指示显示该数据。让您的指令直接调用服务并使用数据可以减少范围污染。

标签: angularjs


【解决方案1】:

是否有过这样的情况,您希望在 html 中的特定部分使用 ng-controller,而不是创建一个内置控制器的指令?

是的,绝对是的。

  • 当目标是操作 DOM 时使用指令。
  • 当您想要创建可重用的组件时使用指令。
  • 当您只需要将值绑定到 DOM 时,请使用控制器。

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

至于两者的区别,看@yvesmancera 已经指出你的问题(angularjs-directives-vs-controllers)。

在 Angular 中,控制器由 JavaScript 构造函数定义,用于扩充 Angular 作用域。

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


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

【讨论】:

    猜你喜欢
    • 2014-02-07
    • 2016-04-28
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2011-03-05
    相关资源
    最近更新 更多