自定义指令–函数式
局部指令:只能在当前组件中使用
全局指令:所有vue组件中都能使用
自定义指令–对象式
局部指令:
<template>
<div class="profile">
<button @click="n++">+1</button><br/><br/>
<input v-fbind:value='n'>
</div>
</template>
<script>
export default {
data() {
return {
n: 1
}
},
directives: {
// 此处只能用对象式,因为函数式中不会触发inserted(),而element.focus()必须在element被插入页面时触发才生效
fbind:{
// 指令与元素成功绑定时(一上来)
bind(element, binding) {
element.value = binding.value
},
// 指令所在元素被插入页面时
inserted(element, binding) {
element.focus()
},
// 指令所在模板被重新解析时
update(element, binding) {
element.value = binding.value
}
}
}
}
</script>
全局指令:
指令的几个注意点:
1、directives中函数的this都指向window
2、指令名称复杂时