angularjs中的编译和链接函数之间的区别是什么

有人能用简单的话解释吗?

文档似乎有点钝。我没有得到的精华和大图片什么时候使用一个在另一个。一个例子对比两个将是真棒。

>编译函数 – 用于模板DOM操作(即操纵tElement =模板元素),因此适用于与指令相关联的模板的所有DOM克隆的操作。
>链接函数 – 用于注册DOM侦听器(即实例范围上的$ watch表达式)以及实例DOM操作(即操纵iElement =单个实例元素)。它在克隆了模板之后执行。例如,在
  • 内,在
  • 后执行链接功能。模板(tElement)已被克隆(到iElement)用于该特定
  • 元件。 $ watch()允许指令通知实例范围属性更改(实例范围与每个实例相关联),这允许指令向DOM呈现更新的实例值 – 通过将内容从实例范围复制到DOM。

    注意,DOM变换可以在编译函数和/或链接函数中完成。

    大多数指令只需要一个链接函数,因为大多数指令只处理一个特定的DOM元素实例(及其实例范围)。

    一种帮助确定使用哪种方法:考虑编译函数不接收作用域参数。 (我故意忽略transclude链接函数参数,它接收一个转录作用域 – 这是rarely使用)因此,编译函数不能做任何你想做的,需要一个(实例)作用域 – 你可以’t $观察任何模型/实例范围属性,你不能操作DOM使用实例范围信息,你不能调用在实例范围上定义的函数等。

    但是,编译函数(如链接函数)可以访问属性。所以如果你的DOM操作不需要实例范围,你可以使用一个编译函数。这里的an example指令,只使用一个编译函数,因为这些原因。它检查属性,但它不需要一个实例作用域来完成它的工作。

    这里是一个指令,也只使用一个编译函数an example。该伪指令只需要转换模板DOM,因此可以使用编译函数

    另一种方法来帮助确定使用:如果你不使用链接功能中的“element”参数,那么你可能不需要链接功能

    由于大多数指令都有链接功能,我不会提供任何例子 – 它们应该很容易找到。

    注意,如果你需要一个编译函数和一个链接函数(或前后链接函数),编译函数必须返回链接函数,因为’link’属性被忽略,如果’compile’属性被定义。

    也可以看看

    > Difference between the ‘controller’,‘link’ and ‘compile’ functions when defining a directive
    > Dave Smith的优秀ng-conf 2104 talk on directives(链接到视频的部分,谈论编译和链接)

  • 相关文章

    AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
    angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
    AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
    AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
    ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
    $http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...