vue自定义指令

本文介绍了如何在Vue中定义局部指令`v-big`和`v-fbind`,`v-big`用于将绑定的数值放大10倍,`v-fbind`使输入元素默认获取焦点。通过`bind`、`inserted`和`update`回调函数,实现了指令的生命周期功能。示例代码展示了这两个指令在实际模板中的应用。
摘要由CSDN通过智能技术生成

一、 定义语法

  1. 局部指令:
new Vue({
	directives: {指令名:配置对象}
})
或者
new Vue({
	directives: {指令名:回调函数}
})
  1. 全局指令:
Vue.directive(指令名, 配置对象)
或者
Vue.directive(指令名, 回调函数)

二、配置对象中常用的三个回调:

  1. bind:指令与元素成功绑定时调用
  2. inserted:指令所在元素被插入页面时调用
  3. update:指令所在模板结构被重新解析时调用

三、备注:

  1. 指令定义时不加v-,但使用时要加v-。
  2. 指令名如果是多个单词,要使用kebab-case命名方式,不要使用camelCase命名。

需求:

  1. 定义一个v-bind指令,和v-text功能类似,但会把绑定的数值放大10倍。
  2. 定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。
<div id="root">
	放大10倍后的n值是:<span v-big="n"></span>
	<button @click="n++">点我n+1</button>
	
	<input type="text" v-fbind:value="n">
</div>
new Vue({
	el: '#root',
	data: {
		n: 1
	},
	directives: {
		// big函数何时会被调用?1. 指令与元素成功绑定时(一上来);2. 指令所在的模板被重新解析时 
		// bind函数和update函数中的逻辑一样
		big(element, binding) {
			console.log(element, binding);
			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;
			}
		}
	}
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值