vue.$set和vm.$set有什么区别
时间: 2023-11-22 08:48:49 浏览: 38
根据提供的引用内容,可以得知`Vue.set()`和`vm.$set()`都可以用来向Vue实例中的响应式对象添加属性并触发视图更新。它们的区别在于`Vue.set()`可以用于全局对象,而`vm.$set()`只能用于当前实例。具体来说,`Vue.set()`的语法为`Vue.set(target, key, value)`,而`vm.$set()`的语法为`vm.$set(target, key, value)`。其中,`target`是要添加属性的对象,`key`是属性名,`value`是属性值。
举个例子,假设我们有一个Vue实例`vm`,其中有一个响应式对象`list`,我们想要向`list`中添加一个新属性`newProp`,可以使用以下两种方法:
```javascript
// 使用Vue.set()
Vue.set(vm.list, 'newProp', 'new value');
// 使用vm.$set()
vm.$set(vm.list, 'newProp', 'new value');
```
这两种方法的效果是一样的,都会向`list`中添加一个新属性`newProp`并触发视图更新。
相关问题
vue2中this.$vm.$set为undefined
在 Vue 2 中,`this.$vm.$set` 是 undefined 是因为 `$set` 这个方法并不存在于 Vue 实例中。`$set` 方法是用于在 Vue 中以响应式地方式设置对象属性的。在 Vue 2 中,可以使用 `Vue.set` 方法来实现同样的效果。
你可以将代码中的 `this.$vm.$set` 替换为 `Vue.set`,并传递对象、要设置的属性和对应的值作为参数。例如:
```javascript
Vue.set(this.$vm, 'propertyName', propertyValue);
```
这样就可以在 Vue 2 中实现类似于 `this.$vm.$set` 的功能了。
Vue.set 与this.$set的区别
Vue.set()和this.$set()都是用来在Vue实例中设置响应式属性的方法。它们的区别在于使用方式和作用域。
Vue.set()是全局方法,可以在任何地方使用。它的语法是`Vue.set(object, key, value)`,其中object是要设置属性的对象,key是属性名,value是属性值。Vue.set()会将属性设置为响应式属性,即当属性值发生变化时,会触发视图更新。
this.$set()是Vue实例的方法,只能在Vue实例中使用。它的语法是`this.$set(object, key, value)`,其中object是要设置属性的对象,key是属性名,value是属性值。this.$set()也会将属性设置为响应式属性。
总结一下区别:
- Vue.set()是全局方法,可以在任何地方使用;this.$set()是Vue实例的方法,只能在Vue实例中使用。
- Vue.set()的调用方式是`Vue.set(object, key, value)`;this.$set()的调用方式是`this.$set(object, key, value)`。
范例:<<引用:Vue.set()的使用。引用:this.$set()的使用。>>
1. 使用Vue.set()设置响应式属性
```javascript
var vm = new Vue({
data: {
obj: {}
}
})
Vue.set(vm.obj, 'key', 'value')
console.log(vm.obj.key) // 输出:value
```
2. 使用this.$set()设置响应式属性
```javascript
var vm = new Vue({
data: {
obj: {}
},
methods: {
setProperty() {
this.$set(this.obj, 'key', 'value')
}
}
})
vm.setProperty()
console.log(vm.obj.key) // 输出:value
```