angularjs的directive编译和链接的主要区别是什么

都是操作element, attrs 具体分工有什么区别吗?

阅读 2.7k
2 个回答

首先是顺序,compile 先于 link。

function compile(tElement, tAttrs, transclude) { ... }

主要做的是操作模板 dom 元素和元素属性

function link(scope, iElement, iAttrs, controller, transcludeFn) { ... }

主要做的是注册事件,与 scope 绑定。

一般来说,我们使用 directive 并不是为了模板 dom 的操作,而是事件的绑定。所以我们用到 link 会更多些。

对于你的问题来说,都操作 element 和 attrs,区别在于 link 的 scope。link 用于需要用到 scope 来操作 dom 和绑定事件的情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题