1)Vue.directive('自定义指令的名字',{
inserted:function(el){ /*这个元素插入父元素的时候执行的操作*/
el.focus();
}
})
2)
directives:{
'focus':{
inserted:function(el){ /*这个元素插入父元素的时候执行*/
el.focus();
}
}
}
钩子函数
bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
inserted: 被绑定元素插入父节点时调用。(bind与该生命周期钩子函数作用十分类似)
update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。
componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。
简写形式
1)
Vue.directive('bgcolor',function(el,binding){
el.style.background=binding.value;
})
2)directives:{
/*简写 表示bind 和update的时候都会执行*/
'color':function(el,binding){
el.style.color=binding.value;
}
}
例如下面将用自定义redirective实现拖拽:
<div id="out">
<h1>拖拽</h1>
<p class="a"></p>//能拖拽的标签,我没有写它的样式
<p class="a"></p>
<p class="a"></p>
</div>
</body>
<script>
// 这定义的是全局的自定义指令
// Vue.directive('move',function(a){
// a.onmousedown = function(e){
// var x = e.clientX;
// var y = e.clientY;
// document.onmousemove = function(){
// }
// document.onmouseup = function(){
// }
// }
// })
var vm = new Vue({
el:'#out',
data:{
},
methods:{
},
//direvtives:('自定义的名字',function(e){函数里面的参数指是dom元素本身
})
directives:('move',function(e){//局部
a.onmousedown = function(e){
var x = e.clientX;
var y = e.clientY;
document.onmousemove = function(){
}
document.onmouseup = function(){
}
}
})
})
网友评论