前端 this.$set
时间: 2023-08-17 14:11:05 浏览: 89
this.$set 是 Vue.js 框架中的一个方法,用于在响应式对象中添加新的属性或修改已有属性。它的语法如下:
```javascript
this.$set(object, key, value)
```
其中,object 是要操作的响应式对象,key 是要添加或修改的属性名,value 是要设置的属性值。
这个方法的作用是在 Vue.js 的响应式系统中,手动触发数据的更新。通常情况下,直接给对象的属性赋值是无法触发视图更新的,但使用 this.$set 方法可以实现这个目的。
需要注意的是,this.$set 方法只在 Vue 实例中可用,不能在普通的 JavaScript 对象上使用。
相关问题
this.$set使用
this.$set是Vue中的一个实例方法,用于在响应式对象上设置新的属性或修改已有的属性,并确保这些属性也是响应式的。使用this.$set可以解决Vue响应式系统的一个限制,即无法检测到通过索引直接设置数组元素或通过Object.defineProperty添加的属性的变化,所以通过this.$set方法,可以显式地告诉Vue,某个属性的值已经发生了变化,从而触发视图的更新。在数组中,可以使用this.$set来修改和新增数组元素,语法为this.$set(需要修改的数组,需要修改的数组下标,{ "要修改的数组对象,一个/多个" });在对象中,可以使用this.$set来修改和新增对象属性,语法为this.$set(需要改变的对象,"需要改变的对象属性","新值")。
methods: { onSubmit() { this.$message('添加成功!') }, onCancel() { this.$message({ message: '取消!', type: 'warning' }) }, //实现添加 addStudent(){ //后端更新 var url = ` http://localhost:8080/javaWebMaven_war_exploded/addStudent.action?stuno=${this.form.stuno}&stuname=${this.form.stuname}&stuage=${this.form.stuage}`; Axios.get(url).then(response=>{ //前端更新 this.$set(this.tableData, this.index, this.form); }).catch(error=>{ console.log("添加失败了:"+error) }) } }补全代码
根据你提供的代码,可能需要对其进行以下修改:
1. `Axios` 库需要引入:
在 Vue 组件的 `script` 标签中,需要引入 `axios` 库,例如:
```
import axios from 'axios';
```
2. `this.index` 变量未定义:
根据你提供的代码,`this.index` 变量未定义,可能需要在组件的 `data` 中定义它,例如:
```
data() {
return {
form: {
stuno: '',
stuname: '',
stuage: '',
},
tableData: [],
index: null,
};
},
```
3. 代码实现:
根据上述修改,补全代码如下:
```
methods: {
onSubmit() {
this.$message('添加成功!');
},
onCancel() {
this.$message({
message: '取消!',
type: 'warning',
});
},
addStudent() {
// 后端更新
const url = `http://localhost:8080/javaWebMaven_war_exploded/addStudent.action?stuno=${this.form.stuno}&stuname=${this.form.stuname}&stuage=${this.form.stuage}`;
axios.get(url)
.then(response => {
// 前端更新
this.$set(this.tableData, this.index, this.form);
})
.catch(error => {
console.log("添加失败了:" + error);
});
},
},
```
阅读全文