vue自定义指令
- 局部指令:
directives
- 全局指令:
Vue.directive()
局部指令
<!-- 准备好一个容器-->
<div id="root">
<h2>当前的n值是:<span v-text="n"></span> </h2>
<h2>放大10倍后的n值是:<span v-big="n"></span> </h2>
<button @click="n++">点我n+1</button>
<hr/>
<input type="text" v-fbind:value="n">
</div>
<script type="text/javascript">
Vue.config.productionTip = false
new Vue({
el:'#root',
data:{
n:1
},
directives:{
//。
/* 'big-number'(element,binding){
// console.log('big')
element.innerText = binding.value * 10
}, */
//方式一:函数形式(简写)
big(element,binding){
console.log('big',this) //注意此处的this是window
// console.log('big')
element.innerText = binding.value * 10
},
fbind:{
//指令与元素成功绑定时(一上来)
bind(element,binding){
element.value = binding.value
},
//指令所在元素被插入页面时
inserted(element,binding){
element.focus()
},
//指令所在的模板被重新解析时
update(element,binding){
element.value = binding.value
}
}
}
})
</script>
全局指令
//定义全局指令
Vue.directive('fbind',{
//指令与元素成功绑定时(一上来)
bind(element,binding){
element.value = binding.value
},
//指令所在元素被插入页面时
inserted(element,binding){
element.focus()
},
//指令所在的模板被重新解析时
update(element,binding){
element.value = binding.value
}
})
注意
-
directives
中的this是windows对象 - 若自定义名有多个单词,函数形式的函数名要加引号
''
,在模板中使用时用驼峰命名
函数形式何时会被调用?
- 指令与元素成功绑定时(一上来)
- 指令所在的模板被重新解析时
对象形式何时会被调用
- 指令与元素成功绑定时(一上来)
- 指令所在的模板被重新解析时
- 指令所在元素被插入页面时