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项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 Vue.js
vue首次渲染全过程
Apr 21 Vue.js
详解Vue的options
May 15 Vue.js
vue-cropper组件实现图片切割上传
May 27 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
ant design vue的form表单取值方法
Jun 01 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
使用Apache的rewrite技术
2006/06/22 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
写自荐信有哪些不宜?
2013/10/17 职场文书
房产公证书范本
2014/04/10 职场文书
节约能源标语
2014/06/17 职场文书
2015年护士节慰问信
2015/03/23 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
七年级话题作文之执着
2019/11/19 职场文书
pygame面向对象的飞行小鸟实现(Flappy bird)
2021/04/01 Python
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技