angular学习笔记2015728

1.将$parse服务注入到控制器中,而后调用就能够实现手动解析表达式。函数

2.若是指令使用了transclude参数,那么在控制器(下面立刻会介绍)中就没法正常监听数据模型的变化了ui

3.因为指令能够require其余指令所使用的控制器,所以控制器常被用来放置在多个指令间共享的动做。对象

若是咱们但愿将当前指令的API暴露给其余指令使用,可使用controller参数,不然能够作用域

使用link来构造当前指令元素的功能性。若是咱们使用了scope.$watch()或者想要与DOM元素编译

作实时的交互,使用连接会是更好的选择。模板

技术上讲,$scope会在DOM元素被实际渲染以前传入到控制器中。在某些状况下,例如使
用了嵌入,控制器中的做用域所反映的做用域可能与咱们所指望的不同,这种状况下,$scope
对象没法保证能够被正常更新。require

4.渲染

require参数的值能够用下面的前缀进行修饰,这会改变查找控制器时的行为:
?
若是在当前指令中没有找到所须要的控制器,会将null做为传给link函数的第四个参数。
^
若是添加了^前缀,指令会在上游的指令链中查找require参数所指定的控制器。
?^
将前面两个选项的行为组合起来,咱们可选择地加载须要的指令并在父指令链中进行查找。
没有前缀
若是没有前缀,指令将会在自身所提供的控制器中进行查找,若是没有找到任何控制器(或
具备指定名字的指令)就抛出一个错误。技术

5.尽管元素能够被多个指令所支持或修饰,数据

这些指令自己的模板中也能够包含其余指令,但只有属于最高优先级指

令的模板会被解析并添加到模板树中。这里有一个建议,就是将包含模板的指令和添加行为的指令分离开来。若是一个元素已经有一个含有模板的指令了,永远不要对其用另外一个指令进行修饰。只有具备最高优先级的指令中的模板会被编译。

相关文章
相关标签/搜索