为什么ngRepeat使用编译函数,当它只是返回一个链接函数?

时间:2013-07-14 22:22:51

标签: angularjs directive

阅读ngrepeat source,我想知道为什么它定义了一个编译函数,而所有这一切都是返回一个链接函数,就我所见,它不会操纵传递给编译函数的模板。 / p>

2 个答案:

答案 0 :(得分:1)

在查看源代码链接后,看起来链接函数确实使用了编译函数(链接器对象)中的参数。至于为什么它需要链接器obj,我不完全确定。

答案 1 :(得分:0)

定义指令定义对象的方式:

你也可以这样做:

compile: function compile(tElement, tAttrs, transclude) {
      return {
        pre: function preLink(scope, iElement, iAttrs, controller) { ... },
        post: function postLink(scope, iElement, iAttrs, controller) { ... }
      }

http://docs.angularjs.org/guide/directive

检查指令文档

编译函数可以有一个返回值,可以是函数或对象。

  • 返回(后链接)功能 - 相当于注册 当通过配置对象的link属性链接函数时 编译功能为空。
  • 返回一个对象,其中包含通过pre和post注册的函数 properties - 允许您控制何时应该使用链接功能 在链接阶段调用。请参阅有关预链接的信息 下面的后连接功能。