![8bd0db5cd8e779899e56ecd3e84615db.png](https://i-blog.csdnimg.cn/blog_migrate/e1e11cc3c128067d206936fcde641b48.jpeg)
本文实例讲述了VUE实现动态给对象增加属性,并触发视图更新操作。分享给大家供大家参考,具体如下:
在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的。
根据官方文档定义:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。
Vue不允许在已经创建的实例上动态添加新的根级响应式属性(root-levelreactiveproperty)。然而它可以使用Vue.set(object,key,value)方法将响应属性添加到嵌套的对象上。
我们编写如下代码测试给一个对象动态添加属性:
![7b637a2f8b2b38cc7f41bba25006071a.png](https://i-blog.csdnimg.cn/blog_migrate/bef60d7698e44397db0f759acbed9397.jpeg)
这种方式可以给form增加一个属性,但是不会界面不会响应更新。
正确的做法:
![d1aa3f2252c77317d8e9c092f408739f.png](https://i-blog.csdnimg.cn/blog_migrate/f692e2513ed148e948289ab341910dff.jpeg)
这样就可以给对象添加amount属性了。
这个有什么应用场景呢,比如data.form属性很多,其中大部分是不需要要的,这时候,可以使用这种方法实现动态添加需要的属性。
需要注意的是,这种方式是不能给根数据添加属性的,比如:
![d8a6c5f68e10dba3552c8960e86ad868.png](https://i-blog.csdnimg.cn/blog_migrate/84d6d140cd8583ba9924ccd6ecadcf91.jpeg)
这种方式给data增加一个name属性是无效的。
希望本文所述对大家vue.js程序设计有所帮助。