angularjs – 定义指令时’controller’,’link’和’compile’函数的区别

前端之家收集整理的这篇文章主要介绍了angularjs – 定义指令时’controller’,’link’和’compile’函数的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有些地方似乎使用控制器函数来进行指令逻辑和其他使用链接。角度主页上的选项卡示例将一个控制器用于其他指令,并将链接用于其他指令。两者有什么区别?
我将要扩展你的问题,还包括编译函数

>编译函数 – 用于模板DOM操作(即操纵tElement =模板元素),因此适用于与指令相关联的模板的所有DOM克隆的操作。 (如果你还需要一个链接函数(或前和后链接函数),并且你定义了一个编译函数,编译函数必须返回链接函数,因为’link’属性被忽略,如果’compile’属性定义。
>链接函数 – 通常用于注册监听器回调(即,范围上的$ watch表达式)以及更新DOM(即操纵iElement =单个实例元素)。它在克隆了模板之后执行。例如,在

  • 内,在
  • 后执行链接功能。模板(tElement)已被克隆(到iElement)用于该特定
  • 元件。 $ watch允许指令通知范围属性更改(范围与每个实例相关联),这允许指令向DOM呈现更新的实例值。
    >控制器函数 – 必须在另一个指令需要与此指令交互时使用。例如,在AngularJS主页上,pane指令需要将其自身添加到由tabs指令维护的作用域,因此tabs指令需要定义一个可以访问/调用的控制器方法(think API)。有关选项卡和窗格指令的更深入的说明,以及为什么tabs指令使用此控制器(而不是$ scope)在其控制器上创建一个函数,请参阅‘this’ vs $scope in AngularJS controllers

    一般来说,你可以把方法,$手表等放入指令的控制器或链接功能。控制器将首先运行,这有时很重要(参见fiddle,当ctrl和链接函数使用两个嵌套指令运行时记录)。正如Josh在comment中提到的,你可能希望将范围操纵函数放在控制器中,以便与框架的其余部分保持一致。

  • 原文链接:https://www.f2er.com/angularjs/147518.html

    猜你在找的Angularjs相关文章