app.directive("myview",function(){
return {
restrict:"AEMC",
template:"<p>这是更换的后的文字!</p>",
replace:true
}
});
template:是讲标签修改的内容
replace为ture则将修改。
transclude配置项是什么意思?
如果使用的元素标签,标签内部还有内容,在template里面加上这个<h1 ng-transclude></h1>带有ng-transclude的元素,angular将替换标签内部的内容自动修改ng-transclude标签
app.directive("myview",function(){
return {
restrict:"AEMC",
transclude:true,
template:"<p>这是更换的后的文字!<h1 ng-transclude></h1></p>"
}
});
2、templateUrl 配置项,页面引入templateUrl.js
就不需要讲代码写在template里面,而是改成templateUrl后面写引入的代码的模板地址。
3、templateCache
如果模板需要多次使用,使用$templateCache接口来缓存下来
在这里提一下,模块angular有一个run成员方法,会在所有的模块加载完以后运行一次,而且此方法也只执行一次
//使用put方法将模板缓存
app.run(function($templateCache){
$templateCache.put("myapp","<p>这是一个缓存的模板</p>");
});
//使用get方法获取缓存模板
app.directive("myApp",function(){
return {
restrict:"E",
template:$templateCache.get("myapp"),
replace:ture
}
});
4、 compile和link
angular编译需要经过三个阶段:
(1)加载阶段,找到ng-app,确定应用范围。
(2)编译阶段,遍历DOM寻找指令,开始编译,如果发现compile,将在这个阶段调用。
(3)链接阶段,directive的link方法将在这个阶段被调用。如果需要操作DOM,也是通过这个方法调用,还可以绑定事件监听,作用域。
compile函数用来对模板自身进行转换,仅仅在编译阶段执行一次。link函数负责在模型和视图之间进行动态关联,对于指令的每一个实力,link函数都会执行。