vue自定义指令

私有自定义指令

基础用法

  • 在组件内的directives标签内定义自己的自定义指令
  • bind()方法在第一次绑定的时候就会执行一次,数据发生了更新就不会重新执行了
  • bind(el约定为binding来接受其他要传的数据)
<template>
  <div class="app-container">
    <h1 v-color="color1">App 根组件</h1>
	<p v-color="color1">测试</p>
	<p v-color="'red'">测试</p>
    <hr />
   </div>
</template>
 

<script>
export default {
	data() {
		return {
			color1: 'blue',
		}
	},
	directives:{
		// 定义color的自定义指令
		color:{
			// 第一次被绑定到dom元素上被执行
			bind(el,binding){
				// el表示绑定的dom元素
				console.log("binding: ",binding);
				console.log(el); 
				console.log('触发bind函数');
				el.style.color = binding.value

			}
		}
	}
} 
</script>

update函数

  • update函数第一次不生效,后面每一次更新都会生效
directives:{
	// 定义color的自定义指令
	color:{
		// 第一次被绑定到dom元素上被执行
		bind(el,binding){
			// el表示绑定的dom元素
			console.log("binding: ",binding);
			console.log(el); 
			console.log('触发bind函数');
			el.style.color = binding.value

		},
		update(el,binding){
			console.log("修改了 v-color 的update的函数");
			el.style.color = binding.value
		}
	}
}

函数简写方式

  • 如果bind和update逻辑完全相同,则对象格式的自定义指令可以简写为函数形式
directives:{
		color(el,binding){
			el.style.color = binding.value
		}
	}

全局自定义指令

  • 组件内定义的指令只能在自己的组件内使用
  • 全局共享自定义指令,通过Vue.directive()main.js里面进行声明
// Vue.directive('color',{
// 	bind(el,binding){
// 		el.style.color = binding.value
// 	},
// 	update(el,binding){
// 		el.style.color = binding.value
// 	}
// })

Vue.directive('color',function(el,binding){
	console.log("这是全局自定义指令");
	el.style.color = binding.value
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值