我最近一直在读这本不错的书 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/