加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 09:25:25 所属栏目:安全 来源:网络整理
导读:有人能用简单的话解释吗? 文档似乎有点钝。我没有得到的精华和大图片什么时候使用一个在另一个。一个例子对比两个将是真棒。 编译函数 – 用于模板DOM操作(即操纵tElement =模板元素),因此适用于与指令相关联的模板的所有DOM克隆的操作。 链接函数 – 用于
有人能用简单的话解释吗?

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

>编译函数 – 用于模板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(链接到视频的部分,谈论编译和链接)

  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读