angular内置provider之$compileProvider详解


Posted in Javascript onSeptember 27, 2017

一、方法概览

1.directive(name, directiveFactory)

2.component(name, options)

3.aHrefSanitizationWhitelist([regexp]);

4.imgSrcSanitizationWhitelist([regexp]);

5.debugInfoEnabled([enabled]);

6.strictComponentBindingsEnabled([enabled]);

7.onChangesTtl(limit);

8.commentDirectivesEnabled(enabled);

9.cssClassDirectivesEnabled(enabled);

二、方法解释

1、directive(name, directiveFactory)

使用compiler注册一个指令

参数:

name:string,指令的名称。

directiveFactory:function,指令构造工厂函数。

return:

返回自身,以供链式调用。

2、component(name, options)

使用compiler注册一个组件,组件是一种特殊的指令,它自包含了UI,并且总是默认使用独立作用域和restrict: 'E'。组件的定义是简单的,options是一个包含了一系列属性的对象,并且总是强制使用最好的实践,例如controllerAS:$ctrl。

参数:

name:组件的名称。

options:一个对象,包含以下可选的属性。

controller:string|function,指令的控制器,字符串代表一个被注入到该模块的控制器的名称。

controllerAS:string,控制器的一个引用,默认是'$ctrl‘,如果被定义则scope上会有一个该名称的属性,例如scope.$ctrl,那么我们在html中就可以这样使用控制器中的属性,例如<div>{{$ctrl.name}}<div>

template:string|function,组件的模板,如果是函数,则函数有以下两个参数,

$element:当前元素。

$attrs:当前元素属性对象。

templateUrl:string|function,组件模板的路径,如果是函数,则参数和以上template相同。

bindings:一个对象,用于元素的属性和组件属性之间的绑定,并且绑定的值总是绑定到组件的控制器上而不是scope上,详情请查阅bingToController。

transclude:boolean,是否允许嵌入内容,默认false。

require:一个对象,需要其他指令的控制器被绑定到组件的控制器,对象的键指向属性名称,对象的值是其他指令控制器的名称。

$...:额外的属性被添加到指令工厂函数和控制器构造器函数。(这被使用于为组件路由提供注解)

return:

返回自身,用于链式调用。

3、aHrefSanitizationWhitelist([regexp])

恢复或者覆盖白名单urls安全列表的正则表达式,主要用于阻止通过html链接进行的xss攻击。任何将要通过数据绑定到a[href]的urls首先都要经过初始化并转化为一个绝对url,如果这个url匹配aHrefSanitizationWhitelist的正则表达式规则,则会被添加到DOM中,否则转化后的url将会加上'unsafe:‘前缀后才能被加入到DOM中。

参数:

regexp:RegExp,新的白名单正则表达式。

return:

如果参数不存在则返回现在的正则表达式,否则返回自身以供链式调用。

4、imgSrcSanitizationWhitelist([regexp])

和以上aHrefSanitizationWhitelist类似,不过这个是设置img[src]的白名单正则表达式。

5、debugInfoEnabled([enabled])

主要用于开启和关闭运行时的debug信息,默认是true,例如为绑定的元素添加以下信息:

'ng-binding' CSS Class。

'ng-scope‘和'ng-isolated-scope‘ CSS Class。

'$binding‘一个数组,包含了绑定的表达式。

占位符注释将会包含是什么指令或者binding引发了这个占位符,例如<!-- ngIf: shouldShow() -->

参数:

enabled:boolean

return:

如果包含参数则返回自身,否则返回现在的debug状态。

6、strictComponentBindingsEnabled([enabled])

是否开启严格的component bindings检查,如果开启,则除了那些包含了?的bindings,全部都要求在html标签中指定相应的属性。

默认false

参数和返回值和以上debug相同。

7、onChangesTtl(limit)

在复杂的应用程序中,$onChanges钩子和bindings之间的依赖性可能会导致对这些钩子的多个调用迭代,该函数可以设置迭代的次数。

默认是10次。

参数:

limit:integer,迭代的次数。

return:

如果设置了limit则返回自身,否则返回已经设置的limit。

8、commentDirectivesEnabled(enabled)

表明是否编译注释形式的指令,如果禁用将会提高编译的性能,因为编译器不需要去检查注释当编译指令的时候。

默认是true,开启。

参数和返回值和onChangesTtl(limit)类似。

9、cssClassDirectivesEnabled(enabled)

表明是否编译Class形式的指令,如果禁用将会提高编译的性能,因为编译器不需要去检查Class当编译指令的时候。

默认是true,开启。

参数和返回值和onChangesTtl(limit)类似。

以上这篇angular内置provider之$compileProvider详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 类、命名空间、代码组织代码
Jul 31 Javascript
jQuery实现长文字部分显示代码
May 13 Javascript
查询json的数据结构的8种方式简介
Mar 10 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
javascript实现youku的视频代码自适应宽度
May 25 Javascript
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
BootStrap按钮标签及基本样式
Nov 23 Javascript
Dropify.js图片宽高自适应的方法
Nov 27 Javascript
彻底理解js面向对象之继承
Feb 04 Javascript
浅谈redux, koa, express 中间件实现对比解析
May 23 Javascript
Vue.js实现备忘录功能
Jun 26 Javascript
js设计模式之单例模式原理与用法详解
Aug 15 Javascript
详解Node.js利用node-git-server快速搭建git服务器
Sep 27 #Javascript
微信小程序 循环及嵌套循环的使用总结
Sep 26 #Javascript
Node.js dgram模块实现UDP通信示例代码
Sep 26 #Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 #Javascript
微信小程序开发之IOS和Android兼容的问题
Sep 26 #Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
Sep 26 #Javascript
微信小程序url与token设置详解
Sep 26 #Javascript
You might like
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
PHP读取目录下所有文件的代码
2008/01/07 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
php图片加水印原理(超简单的实例代码)
2013/01/18 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
理解JavaScript原型链
2016/10/25 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
详解Angular5/Angular6项目如何添加热更新(HMR)功能
2018/10/10 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
英国袜子店:Sock Shop
2017/01/11 全球购物
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
就业自我评价
2014/02/04 职场文书
学生喝酒检讨书
2014/02/06 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
高中化学教学反思
2016/02/22 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书