VUE 实现动态给对象增加属性,并触发视图更新操
网络编程 2021-07-04 15:02www.168986.cn编程入门
这篇文章主要介绍了VUE 实现动态给对象增加属性,并触发视图更新操作,涉及vue.js对象属性动态操作及视图更新相关实现技巧,需要的朋友可以参考下
本文实例讲述了VUE 实现动态给对象增加属性,并触发视图更新操作。分享给大家供大家参考,具体如下
在开发过程中,我们时常会遇到这样一种情况当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。
根据官方文档定义如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。
Vue 不允许在已经创建的实例上动态添加新的根级响应式属性 (root-level reactive property)。它可以使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上。
我们编写如下代码测试给一个对象动态添加属性
<div id="app"> <input v-model="form.amount" /> <input type="button" @click="demoSet()" value="setName"> </div> <script type="text/javascript"> var vm=new Vue({ el: "#app", data: { i:0, form:{} }, methods:{ demoSet(){ this.form.amount=this.i++; //this.$set(this.form,"amount",this.i++); } } }); </script>
这种方式可以给form增加一个属性,不会界面不会响应更新。
正确的做法
<div id="app"> <input v-model="form.amount" /> <input type="button" @click="demoSet()" value="setName"> </div> <script type="text/javascript"> var vm=new Vue({ el: "#app", data: { i:0, form:{} }, methods:{ demoSet(){ this.$set(this.form,"amount",this.i++); } } }); </script>
这样就可以给对象添加amount 属性了。
这个有什么应用场景呢,比如 data.form 属性很多,其中大部分是不需要要的,这时候,可以使用这种方法实现动态添加需要的属性。
需要注意的是,这种方式是不能给根数据添加属性的,比如
<div id="app"> <input v-model="name" /> <input type="button" @click="demoSet()" value="setName"> </div> <script type="text/javascript"> var vm=new Vue({ el: "#app", data: { }, methods:{ demoSet(){ this.$set(this,"name","ray"); } } }); </script>
这种方式给data 增加一个 name 属性是无效的。
希望本文所述对大家vue.js程序设计有所帮助。
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南