目录
一、自定义指令
1、定义语法
(1).局部指令
new Vue( { directives: {指令名:配置对象} } )
或者
new Vue( { directives {指令名:回调函数} } )
(2).全局指令
Vue.directive ( 指令名,配置对象 )
或者
Vue.directive ( 指令名,回调函数 )
2、配置对象中常用的三个回调
(1).bind
指令与元素成功绑定时调用
(2).inserted
指令所在元素被插入页面时调用
(3).update
指令所在的模板被重新解析时调用
3、备注
1.指令定义时不加v-,但使用时要加v-
2.指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名
4.案例
需求一:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍
需求二:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点
<body>
<div id="root">
<h2>当前的n值是:<span v-text="n"></span></h2>
<h2>放大10倍后的n值是:<span v-big="n"></span></h2>
<button @click="n++">点我n++</button>
<hr>
<input type="text" v-fbind:value="n">
</div>
</body>
<script>
Vue.config.productionTip = false
new Vue({
el: '#root',
data: {
n: 99
},
directives: {
//big函数何时被调用?1.指令与元素成功绑定时(一上来)
// 2.指令所在的模板被重新解析时
big(element, binding) {
console.log('big', this);//注意:此处的this是window
element.innerText = binding.value * 10
},//相当于简写形式,有bind和update函数
fbind: {
//指令与元素成功绑定时(一上来)
bind(element, binding) {
element.value = binding.value
},
//指令所在元素被插入页面时
inserted(element, binding) {
element.focus()
},
//指令所在的模板被重新解析时
update(element, binding) {
element.value = binding.value
}
}
}
})
</script>
运行结果:
二、 生命周期
1.生命周期简介
(1).又名生命周期回调函数、生命周期函数、生命周期钩子
(2).生命周期是什么:Vue在关键时刻帮我们调用的一些特殊名称的函数
(4).生命周期函数中的this指向是 vm 或 组件实例对象
2.vm的生命周期
将要创建 ===> 调用beforeCreate函数
创建完毕 ===> 调用created函数
将要挂载 ===> 调用beforeMount函数
(重要)挂载完毕 ===> 调用mounted函数
将要更新 ===> 调用beforeUpdate函数
更新完毕 ===> 调用updated函数
(重要)将要销毁 ===> 调用beforeDestroy函数
销毁完毕 ===> 调用destroyed函数
3.常用的生命周期钩子
1.mounted:发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】
2.beforeDestroy:清除定时器、绑定自定义事件、取消订阅消息等【收尾工作】
4.关于销毁Vue实例
1.销毁后借助Vue开发者工具看不到任何信息
2.销毁后自定义事件会失效,但原生DOM事件依然有效
3.一般不会再beforeDestroy操作数据,因为即使操作数据,也不会再触发更新流程了