Vue中,如何在方法中给data中的对象动态的添加字段
问题描述
vue 创建后的数据,自定义设置对象的属性,实现不了双向绑定
当业务场景,需要在请求接口数据新增自定义的属性
问题解决方式
通过查资料,找到 Vue 提供的一种全局添加对象字段的方法。
具体解决方式
1 | Vue.$set("想要添加字段的对象", "字段名", "字段值"); |
示例
1 | let foodList = [ |
我们要做数量增加时候,后自定义添加数量属性 quantity:
1 | // 添加自定义属性数量quantity |
我们需要对数量增加的时候,quantity 是实现不了双向绑定的,比如:
1 | // 特殊菜数量添加 |
解决方法:
这时候需要用$set 方法,设置对象的属性。
如果对象是响应式的,确保属性被创建后也是响应式的,同时触发视图更新。这个方法主要用于避开 Vue 不能检测属性被添加的限制。
1 | vm.$set(target, key, value); |
- 参数:
- {Object | Array} target
- {string | number} key
- {any} value
- 返回值:设置的值。
用法:
1 | foodList.forEach(item => { |
这样后面创建的属性就可以达到双向绑定了!
Vue 中的组件的 data 为什么是一个函数?
每次使用组件时都会对组件进行实例化操作,并且调用 data 函数返回一个对象作为组件的数据源。这样可以保证多个组件间数据互不影响。
如果 data 是对象的话,对象属于引用类型,会影响到所有的实例。所以为了保证组件不同的实例之间 data 不冲突,data 必须是一个函数。