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 相关文章推荐
在b/s开发中经常用到的javaScript技术
Aug 23 Javascript
javascript面向对象编程(一) 实例代码
Jun 25 Javascript
jQuery 一个图片切换的插件
Oct 09 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
Oct 11 Javascript
JS+CSS实现Li列表隔行换色效果的方法
Feb 16 Javascript
AngularJs Managing Service Dependencies详解
Sep 02 Javascript
简单实现Vue的observer和watcher
Dec 21 Javascript
JavaScript实现星级评分
Jan 12 Javascript
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
chorme 浏览器记住密码后input黄色背景处理方法(两种)
Nov 22 Javascript
uni-app之APP和小程序微信授权方法
May 09 Javascript
微信小程序转化为uni-app项目的方法示例
May 22 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
DOM XPATH获取img src值的query
2013/09/23 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
详解微信小程序的 request 封装示例
2018/08/21 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
python fabric使用笔记
2015/05/09 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
教师自我剖析材料
2014/09/29 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python