欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

angular内置provider之$compileProvider详解

程序员文章站 2022-03-20 22:15:11
一、方法概览 1.directive(name, directivefactory) 2.component(name, options) 3.ahrefsani...

一、方法概览

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详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。