Vue 自定义指令(directive)

气温骤降,南京又开始了降温 速冻模式,这谁受得了。

在这里插入图片描述
进入主题:
vue自带了很多的指令,v-once、v-model、v-for等,这些指令对我们的代码带来了很多的帮助,也让他们的编写简单了不少,但是不可能什么问题都帮我们解决,那有些我们想要方便又没有vue自带指令的时候,我们就可以去自己写一个。
vue:无中生有
我:顺手牵羊
directive也是分全局指令和局部指令,我们先看全局指令:
直接用Vue.directive注册了一个叫v-red的全局指令,后面括号中的第一个值就是使用了这个指令的标签,后面的值暂时用不到。

Vue.directive('red',(el,data)=>{
	el.style.color = 'red'
})

我们在页面标签的开头去写上我们刚刚注册的指令

<p v-red>自定义指令</p>

这个时候我们再去看页面效果
在这里插入图片描述
他的字体变成了红色。
局部指令的写法和全局写法没什么区别

new Vue({
	el:"#app",
	directives:{
		red:(el,data)=>{
			el.style.color = "red"
		}
	}
})

大家仔细看会发现,局部指令比全局指令少了个s,当我们想定义多个全局指令的时候,我们就需要写多个Vue.directive,而局部指令则是在directive对象内继续写函数,比如

new Vue({
	el:"#app",
	directives:{
		red:(el,data)=>{
			el.style.color = "red"
		},
		blue:(el,data)=>{
			el.style.color = "blue"
		}}
})

那我们要是想有传值该怎么办,就像这样

<p v-color="red">自定义指令</p>

这时候我们就可以用到data值了,但是!!!
v-color后的red并不是字符串,而是一个传过去的变量名,就像我们写**v-model=‘str’**一样,
我们需要在data里写一个red,才能正常获取,这边那局部指令举例

new Vue({
	el:"#app",
	data(){
		return {
			red:'red'
		}
	},
	directives:{
		color:(el,data)=>{
			el.style.color = data.value
		}
	}
})

data对象里有个value,它的值就是v-color='red’传过来的datared相应的值。
那我们不想传这个变量怎么办

<p v-color="'red'">自定义指令</p>

在拿一个引号包裹住,表示传一个字符串过去。

在这里插入图片描述
结束,拜拜

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值