美文网首页
项目问题

项目问题

作者: EO_eaf6 | 来源:发表于2020-02-21 13:21 被阅读0次

问题:在已定义好的对象上动态添加属性,数据发生变化,但视图页面未更新显示
原因:Vue 不允许在已经创建的实例上动态添加新的根级响应式属性, Vue 无法探测普通的新增属性
解决方法:
(1)在原始数据对象(定义时对象)上添加属性,将值置为空串
(2)使用Vue.set(target,key,value)为对象添加新的响应属性(注:由于这里使用Vue请引入Vue,或使用全局Vue的vm.set()方法------this.$set(target,key,value)即可)

当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的属性,并使用 [Object.defineProperty] 把这些属性全部转为[getter/setter]
受现代 JavaScript 的限制 (以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除。由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。

解决方案
官方定义:

Vue 不允许在已经创建的实例上动态添加新的根级响应式属性 (root-level reactive property)。然而它可以使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上:

Vue.set(vm.obj, 'e', 0)
您还可以使用 vm.$set 实例方法,这也是全局 Vue.set 方法的别名:

this.$set(this.obj,'e',02)

有时你想向已有对象上添加一些属性,例如使用 Object.assign() 或 _.extend() 方法来添加属性。但是,添加到对象上的新属性不会触发更新。在这种情况下可以创建一个新的对象,让它包含原对象的属性和新的属性:

// 代替 Object.assign(this.obj, { a: 1, e: 2 })
this.obj= Object.assign({}, this.obj, { a: 1, e: 2 })

转自:https://www.jianshu.com/p/71b1807b1815

相关文章

  • 项目问题

    问题:在已定义好的对象上动态添加属性,数据发生变化,但视图页面未更新显示原因:Vue 不允许在已经创建的实例上动态...

  • IDEA 中不同项目引用或调用问题

    IDEA 中不同项目引用或调用问题 问题描述   存在两个Maven项目 A、B,项目 A 引用 B 项目。A项目...

  • 项目问题总结

    盖士人读书,第一要有志,第二要有识,第三要有恒。有志则断不甘为下流;有识则知学问无穷,不敢以一得自足,如河泊之观海...

  • 项目问题小计

    出来做项目,的确要比正常的项目要复杂许多。这要求我们队项目的管控的力度更大。之前虽然也学过项目管理,不过理解不够深...

  • 项目问题总结

    1.小米手机轮播图下方的指示点无法显示,原因:因为小米手机版本为6.0,指示点资源为V21,应该把drawable...

  • 德国项目问题

    一、语言培训-基础B1-德国考试-德国培训-B2-上岗 学生到中间的某一环节放弃了怎么办?达不到标准怎么办?学费是...

  • 项目问题随笔

    今天做项目花了一天的时间检查和修复一个界面问题,弄得简直崩溃,最后发现终于恍然大悟。 背景是IOS才更新到11不久...

  • 项目问题集

    这是一个实现UIScrollView中,某一栏内容自动弹到顶端的功能,用的是SpringPanel。 if (In...

  • 项目管理问题

    做项目管理也有一段时间了,在此列几个注意点,安排好自己的计划,能及时的控制风险,保证项目的进度! 1、了解项目需求...

  • IOS 项目问题

    IOS安装CocoaPods详情过程https://www.tuicool.com/articles/3yAJR3...

网友评论

      本文标题:项目问题

      本文链接:https://www.haomeiwen.com/subject/ckrcqhtx.html