vue项目中v-model父子组件通信的实现详解
前言我们在vue项目中,经常有这样的需求,父组件绑定v-model,子组件输入更改父组件v-model绑定的数值。很多朋友对这种操作不是很清楚,这需要对v-model有比较深入的了解,今天谈谈v-model。 vue的双向数据绑定v-model这个指令只能用在, 这个问题在很多前端面试中,会提及。面试官问你,vue的双向数据绑定原理是什么?当然,这个也是耳熟能详的问题,百度随便一搜索,到处都能找到答案。 一般都会搜索到,是用 ,来监听数据get和set,来实现数据劫持的。 假如对Object.defineProperty( )不是很了解,可以点击上面链接,看看其语法! 举个简单的例子:如果想要在执行 上面代码执行一下,可以查看效果! 关于 vue的双向数据绑定,具体如何实现的?网上也有很多实现的代码,这里就不多累赘了! v-model 的使用上面开了一个小差,讲了那么多,其实就是为了说明Vue 是单项数据流,v-model 只是语法糖而已。 第一行的代码其实只是第二行的语法糖。然后第二行代码还能简写成这样: 也就是说, 也可以写成 v-model在组件上的使用回到我们一开始的疑问了?vue中v-model如何进行父子组件的通信?如何在组件中使用呢?假如你理解了我上面的例子,那么,我们就可以很简单的在组件中使用v-model了。 父组件代码如下:
{{haorooms}}
子组件代码如下: 我们可以通过上面代码,子组件修改父组件v-model绑定的值! 实现截图如下: v-model 的缺点和解决办法在创建类似复选框或者单选框的常见组件时,v-model就不好用了。 我们可以用如下方式解决: 父组件可以如下写: 子组件:
@change="$emit('balabala',$event.target.checked)"
:checked="value"
/>
export default {
data(){
return{
}
},props: ['checked'],//这里就不用 value 了,而是 checked
model: {
prop: 'checked',event: 'balabala'
},}
关于vue的v-model就写到这里。 总结以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程之家的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |