扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇文章给大家分享的是有关vue中怎么利用v-model指令实现父子组件通信,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
成都创新互联公司专业为企业提供睢宁县网站建设、睢宁县做网站、睢宁县网站设计、睢宁县网站制作等企业网站建设、网页设计与制作、睢宁县企业网站模板建站服务,十多年睢宁县做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。vue的双向数据绑定
v-model这个指令只能用在,
这个问题在很多前端面试中,会提及。面试官问你,vue的双向数据绑定原理是什么?当然,这个也是耳熟能详的问题,百度随便一搜索,到处都能找到答案。
一般都会搜索到,是用Object.defineProperty( ) ,来监听数据get和set,来实现数据劫持的。
假如对Object.defineProperty( )不是很了解,可以点击上面链接,看看其语法!
举个简单的例子:
var blog = { name: 'haorooms博客' }; console.log(blog.name); // haorooms博客
如果想要在执行console.log(blog.name)
的同时,直接给haorooms博客加个书名号,那要怎么处理呢?或者说要通过什么监听对象 blog的属性值。这时候Object.defineProperty( )
就派上用场了,代码如下:
var blog= {} var name = ''; Object.defineProperty(blog, 'name', { set: function (value) { name = value; console.log('欢迎来到' + value); }, get: function () { return '《' + name + '》' } }) blog.name = 'haorooms博客'; // 欢迎来到haorooms博客 console.log(blog.name); // 《haorooms博客》
上面代码执行一下,可以查看效果!
关于 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指令实现父子组件通信,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联成都网站设计公司行业资讯频道。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流