【发布时间】:2016-08-08 20:10:48
【问题描述】:
我已经仔细阅读并重新阅读了 Vue 文档 "Reactivity in Depth" 以及 vm.$set 和 Vue.set 的 API,但我仍然很难确定何时使用哪个。能够区分这两者对我来说很重要,因为在我当前的 Laravel 项目中,我们在对象上动态设置了很多属性。
文档中的区别似乎在于 vm.$set 是“用于 Vue 实例”而 Vue.set 是“用于纯数据对象”和 Vue.set 是全局的语言:
但是,有一些方法可以添加属性并使其在 已创建实例。
对于 Vue 实例,可以使用 $set(path, value) 实例方法:
vm.$set('b', 2)
// `vm.b` and `data.b` are now reactive
对于普通数据对象,可以使用全局 Vue.set(object, key, 值)方法:
Vue.set(data, 'c', 3)
// `vm.c` and `data.c` are now reactive
最后,我想知道是否可以将执行上述操作的第三个“选项”(一次添加多个属性)用作上述 2 个选项中的任何一个的等效替代品(仅添加 1 个属性)多个)?
有时您可能希望将多个属性分配给一个 现有对象,例如使用 Object.assign() 或 _.extend()。 但是,添加到对象的新属性不会触发更改。 在这种情况下,创建一个新的对象,其属性来自两个 原始对象和mixin对象:
// instead of `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })
【问题讨论】:
-
我不明白你的问题。你这么说,vm.$set 是用于实例的,而 Vue.set 是用来定义响应式数据的。
-
如果你能解释两者之间的区别以及第三个选项如何适应,那么你就会得到我的问题的答案
标签: javascript laravel vue.js