<图为一个元素上有2个指令的情况>
把指令标签转换为dom结构,执行complie方法,compile方法返回的就是Link函数,所以如果指令配置了compile方法,就不需要再配置Link方法了,
compile方法有3个参数tElement,tAttrs,transclude,tElement是该指令标签的JQuery对象,transclude是原始数据里的内容
compile:function(tElement,tAttrs,transclude){
tElement.append(angular.element("<div>content</div>"));//这种方式可以给该标签增加内容
return {pre:function(scope,iElement,iAttrs,controller){},post:function(scope,iElement,iAttrs,controller){}}//这就是Link方法,它包含两个属性,pre指在指令连接到子元素之前运行该方法,post指令连接到子元素之后运行该方法
}
一般compile方法用来改变dom结构,link方法用来给该指令元素绑定事件,Link方法包含4个参数scope,iElement,iAttrs,controller
Link:function(scope,iElement,iAttrs,controller){//scope是当前指令元素的作用域
iElement.on(‘click‘,function(){
scope.$apply(function(){ //在控制器里改变视图模板里的内容必须用脏检查$apply方法,除非该元素用了ng-model指令绑定了数据
scope.user.name=‘new name‘;
})
})
}