学习AngularJs:Directive指令用法(完整版)
根据ng-app划定的作用域来调用$compile服务进行编译,angularjs会遍历整个HTML文档,并根据js中指令的定义来处理在页面上声明的各个指令按照指令的优先级(priority)排列,根据指令中的配置参数(template,place,transclude等)转换DOM然后就开始按顺序执行各指令的compile函数(如果指令上有定义compile函数)对模板自身进行转换 注意:此处的compile函数是我们指令中配置的,跟上面说的$compile服务不一样。每个compile函数执行完后都会返回一个link函数,所有的link函数会合成一个大的link函数 然后这个大的link函数就会被执行,主要做数据绑定,通过在DOM上注册监听器来动态修改scope中的数据,或者是使用$watchs监听 scope中的变量来修改DOM,从而建立双向绑定等等。若我们的指令中没有配置compile函数,那我们配置的link函数就会运行,她做的事情大致跟上面complie返回之后所有的link函数合成的的大的link函数差不多。 所以:在指令中compile与link选项是互斥的,如果同时设置了这两个选项,那么就会把compile所返回的函数当做是链接函数,而link选项本身就会被忽略掉 13、编译函数 Compile function function compile(tElement, tAttrs, transclude) { ... } tElement - template element - 指令所在的元素。对这个元素及其子元素进行变形之类的操作是安全的。 14、链接函数 Linking function function link(scope, iElement, iAttrs, controller) { ... } 说明: nbsp;nbsp;nbsp; compile选项本身并不会被频繁使用,但是link函数则会被经常使用。本质上,当我们设置了link选项,实际上是创建了一个postLink() 链接函数,以便compile() 函数可以定义链接函数。通常情况下,如果设置了compile函数,说明我们希望在指令和实时数据被放到DOM中之前进行DOM操作,在这个函数中进行诸如添加和删除节点等DOM操作是安全的。compile和link选项是互斥的。如果同时设置了这两个选项,那么会把compile所返回的函数当作链接函数,而link选项本身则会被忽略。译函数负责对模板DOM进行转换。链接函数负责将作用域和DOM进行链接。 在作用域同DOM链接之前可以手动操作DOM。在实践中,编写自定义指令时这种操作是非常罕见的,但有几个内置指令提供了这样的功能。 链接函数是可选的。如果定义了编译函数,它会返回链接函数,因此当两个函数都定义时,编译函数会重载链接函数。如果我们的指令很简单,并且不需要额外的设置,可以从工厂函数(回调函数)返回一个函数来代替对象。如果这样做了,这个函数就是链接函数。 本文转载http://blog.csdn.net/evankaka 以上就是AngularJs:Directive指令用法的全部内容,希望对大家的学习有所帮助。 (编辑:源码门户网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 都说Linux是吃内存大户,可你知道具体是哪些进程吃掉了吗?
- 如何免费将Windows 10转移到新的HDD/SSD?
- windows-sbs-2008 – 我的公司已经超出了SBS / Essentials.
- Kafka源码分析及图解原理之Broker端
- windows-server-2008 – Server 2008 R2到Server 2016选项
- windows-server-2012-r2 – 禁用Windows 2012 R2上的更新弹
- 史上最全 Windows 安全工具锦集
- 微软Surface Duo双屏手机成功进到Win11 OOBE界面
- 如何从命令行同时移动多种文件类型
- 支付宝与各大银行发表联合声明 反驳遭银行封杀