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

angularjs – 定义指令时’controller’,’link’和’compile’

发布时间:2020-12-17 09:23:26 所属栏目:安全 来源:网络整理
导读:有些地方似乎使用控制器函数来进行指令逻辑和其他使用链接。角度主页上的选项卡示例将一个控制器用于其他指令,并将链接用于其他指令。两者有什么区别? 我将要扩展你的问题,还包括编译函数。 编译函数 – 用于模板DOM操作(即操纵tElement =模板元素),因此
有些地方似乎使用控制器函数来进行指令逻辑和其他使用链接。角度主页上的选项卡示例将一个控制器用于其他指令,并将链接用于其他指令。两者有什么区别?
我将要扩展你的问题,还包括编译函数。

>编译函数 – 用于模板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中提到的,你可能希望将范围操纵函数放在控制器中,以便与框架的其余部分保持一致。

  • (编辑:李大同)

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

      推荐文章
        热点阅读