我将要扩展你的问题,还包括编译函数。
内,在
之后执行链接功能。模板(tElement)已被克隆(到iElement)用于该特定
元件。 $ watch允许指令通知范围属性更改(范围与每个实例相关联),这允许指令向DOM呈现更新的实例值。
>控制器函数 – 必须在另一个指令需要与此指令交互时使用。例如,在AngularJS主页上,pane指令需要将其自身添加到由tabs指令维护的作用域,因此tabs指令需要定义一个可以访问/调用的控制器方法(think API)。有关选项卡和窗格指令的更深入的说明,以及为什么tabs指令使用此控制器(而不是$ scope)在其控制器上创建一个函数,请参阅@L_404_0@。
原文链接:https://www.f2er.com/angularjs/147518.html>编译函数 – 用于模板DOM操作(即操纵tElement =模板元素),因此适用于与指令相关联的模板的所有DOM克隆的操作。 (如果你还需要一个链接函数(或前和后链接函数),并且你定义了一个编译函数,编译函数必须返回链接函数,因为’link’属性被忽略,如果’compile’属性定义。
>链接函数 – 通常用于注册监听器回调(即,范围上的$ watch表达式)以及更新DOM(即操纵iElement =单个实例元素)。它在克隆了模板之后执行。例如,在
>控制器函数 – 必须在另一个指令需要与此指令交互时使用。例如,在AngularJS主页上,pane指令需要将其自身添加到由tabs指令维护的作用域,因此tabs指令需要定义一个可以访问/调用的控制器方法(think API)。有关选项卡和窗格指令的更深入的说明,以及为什么tabs指令使用此控制器(而不是$ scope)在其控制器上创建一个函数,请参阅@L_404_0@。
一般来说,你可以把方法,$手表等放入指令的控制器或链接功能。控制器将首先运行,这有时很重要(参见fiddle,当ctrl和链接函数使用两个嵌套指令运行时记录)。正如Josh在comment中提到的,你可能希望将范围操纵函数放在控制器中,以便与框架的其余部分保持一致。