javascript - Angular 1.5 组件与旧指令 - 链接函数在哪里?

标签 javascript angularjs angularjs-directive angular-directive

我最近一直在读这本不错的书 article关于 Angular 1.5 中新的 .component() 助手,它应该可以帮助每个人最终迁移到 Angular 2。一切看起来都很好很简单,但我找不到任何关于组件内部 DOM 操作的信息。

虽然有一个 template 属性,它可以是一个函数并接受 $element$attrs 参数。我仍然不清楚这是否是 link 函数的替代品。好像不是。

最佳答案

编辑 2/2/16:1.5 文档现在涵盖组件:https://docs.angularjs.org/guide/component


基于一些阅读的一些想法(下面的链接):

  • 组件不能替代指令。组件是一种特殊类型的指令,它使用模板组织 Controller 。

  • 组件没有链接功能, Controller 仍然不是您处理 DOM 操作的地方。

  • 如果您需要 DOM 操作,您的组件可以使用在链接函数中包含该 DOM 操作的其他指令。

我花了一段时间才弄明白这一点,但一旦弄明白了,我就明白了:组件是指令,但并非所有指令都是——或需要——组件。

关于链接函数的问题是一个很自然的问题,或者对我来说,当我认为组件正在取代指令时。为什么?因为我们被教导将 DOM 操作放在指令的链接函数中:“想要修改 DOM 的指令通常使用链接选项来注册 DOM 监听器以及更新 DOM。” https://docs.angularjs.org/guide/directive .

如果您以该假设运行(组件替换指令),那么您会发现 Angular 文档没有回答这个问题,因为一旦您知道组件的用途,这就不是正确的问题了。 (组件在 $compileProvider documentation 而非 directive documentation 中描述。)

背景阅读

我上面所说的实际上是对 Todd Motto 在可能是(迄今为止)关于组件和指令的最佳讨论中所说的话的改写:

https://www.reddit.com/r/angularjs/comments/3taxjq/angular_15_is_set_to_introduce_the_component/

将这些评论提取到更笼统的文章中可能会很有用。

大多数关于组件的文章都没有提到链接功能(这并不意味着这些文章不是很好的文章):

https://toddmotto.com/exploring-the-angular-1-5-component-method/

https://medium.com/@tomastrajan/component-paradigm-cf32e94ba78b#.vrbo1xso0

https://www.airpair.com/angularjs/posts/component-based-angularjs-directives

或者当提到链接函数时,它在括号中:

http://teropa.info/blog/2015/10/18/refactoring-angular-apps-to-components.html

One article组件说,“使用 Controller 而不是链接功能。”但这不是“替代”情况: Controller 不是链接功能的替代品。

关于javascript - Angular 1.5 组件与旧指令 - 链接函数在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33709062/

相关文章:

javascript - Angular JS 将对象复制到另一个对象到 for 循环中

javascript - Dangle JS 图表的数据格式应该是什么?

javascript - 以下 angularJS 声明属于哪个命名空间?

angularjs - 尝试访问范围时出现 Angular-bootstrap 指令问题

javascript - 将 JSON 数据插入表中

javascript - Angularjs 删除带有空字段的对象

javascript - Tempo js - 渲染字符串数组或简单对象,引用模板中的 "this"

javascript - 从单个 HTML *字符串* 注册多个部分

javascript - 从 TypeScript 生成 PropType

javascript - 在 Fusion Tables 中,可以通过基于 Google Maps Javascript 的 API 设置渐变吗?