vue组件,自定义v-model方法

Posted 狂乱贵公子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue组件,自定义v-model方法相关的知识,希望对你有一定的参考价值。

 

<my-component v-model="obj"></my-component>

  

在使用my-component组件时,为了实现双向绑定。

 

Vue.component(‘my-component‘, {
	props: {
		obj: Object,
	},
	model: {
		prop: ‘obj‘,
		event: ‘change‘
	},
	methods: {
		onchange: function() {
			this.$emit(‘change‘, this.obj);
		}
	}
});

  

上面代码中

1.props对象中,需要定义一个能够从外部传入的变量,这里我定义了一个obj。这样就可以用下面这行代码进行传递值

<my-component :obj="obj对象"></my-component>

  

2.为了能够使用v-model语法糖,我们定义了model对象。model对象包含两个属性,一个是prop,一个是event。prop默认是value,event默认是input,我们这里写model是为了改变默认的东西,使用我们自己定义的变量。写好之后就可以用下面这行代码了。

<my-component v-model="obj对象"></my-component>

  

3.虽然可以这么用,但还是不能从子组件传递数据到外部。因为change事件并没有被触发。这个change事件是我自定义的,所以这里需要写一个方法onchange。方法名是次要的,主要的是里面的那行代码。

this.$emit(‘change‘, this.obj);

  

这行两个参数,第一个是事件名,和model里的event属性的值要一样。第二个参数是改变的值。写第二个变量,才能改变外部的数据,实现双向绑定的功能。

 

文笔不行,没办法表达出清晰的思路,贴上早上翻阅的一些有用的链接,以供参考。

 

参考:

https://jsfiddle.net/yyx990803/58kxs8tj/ 

https://github.com/vuejs/vue/issues/4373

http://lizhihua.me/2016/10/31/vue/component_v-model/

 

以上是关于vue组件,自定义v-model方法的主要内容,如果未能解决你的问题,请参考以下文章

vue框架之自定义组件中使用v-model

vue3自定义组件使用v-model实现双向数据绑定

vue 自定义组件 v-model双向绑定 父子组件同步通信

vue 自定义组件使用v-model

vue 自定义v-model的组件 修饰符无效,需要改怎么做!

[Vue深入组件]:v-model语法糖与自定义v-model