Vue组件更新数据v-model不生效的解决


Posted in Vue.js onApril 02, 2022

组件更新数据v-model不生效

问题描述

在使用Vue双向绑定(v-model)功能时,封装子组件通过Inject功能使用了父组件中的 model 中的属性进行双向绑定,此时在程序中去更新model的某个属性的值,发现子组件没有实时渲染。

原因分析

由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。尽管如此我们还是有一些办法来回避这些限制并保证它们的响应性。

详见:检测变化注意事项

## 解决方案 对于这种对象变化,我们有三种方法去解决:

方法一

使用Vue.set(object,key,value)

Vue.set(vm.obj,"sex","man")

方法二

使用this.$set(this.object,key,value)

this.$set(this.obj,"sex","man")

方法三

使用**Object.assign({},this.obj)**重新赋值

this.obj.sex = "man";
this.obj = Object.assign({},this.obj)

总结:前两种方式都是应用了Vue内置的set方法去触发对象数据的检测,第三种方式使用的Vue的特性,对跟节点下的数据变更的自动检测。
 

关于v-model失效的问题

在父子组件中,例如iview的table组件中的slot,该函数相对比于table所在附件为父子组件,父子组件的v-model不会是双向绑定,只是单向传值,这是vue的机制问题,原因是不想让子组件污染父组件的数据环境,所以使用的单向传输,经过测试,使用on-change,on-blur等,均存在不同的问题,input如果使用on-change,修改数据源会导致输一个字符,然后更新到v-model绑定的数据源上,然后由于数据源的更新,就会导致该组件的再次渲染,input将会失去焦点,使用v-blur则会导致点击其他按钮时,第一次点击,失去input的焦点,执行绑定的方法,第二次点击才会生效。

解决办法

特别的土,声明一个新的数据源,然后使用on-change改变新的数据源,然后再特定的情况下,比如提交等时机,将新的数据源赋给老的数据源,这样就不会引起问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
vue实现防抖的实例代码
Jan 11 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
vue脚手架项目创建步骤详解
Mar 02 Vue.js
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
vue数据字典取键值项目的字典问题
Apr 12 Vue.js
vue 自定义的组件绑定点击事件
Apr 21 Vue.js
Vue+TypeScript中处理computed方式
Apr 02 #Vue.js
Vue+Flask实现图片传输功能
Apr 01 #Vue.js
在vue中import()语法不能传入变量的问题及解决
Apr 01 #Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 #Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 #Vue.js
vue ref如何获取子组件属性值
Mar 31 #Vue.js
vue如何使用模拟的json数据查看效果
You might like
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
JS解密入门之凭直觉解
2008/06/25 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Python多进程机制实例详解
2015/07/02 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python with标签使用方法解析
2020/01/17 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
英语教学随笔感言
2014/02/20 职场文书
委托公证书范本
2014/04/03 职场文书
商场促销活动总结
2014/07/10 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
Python实现归一化算法详情
2022/03/18 Python