elementui行内编辑绑定数据没变化
时间: 2023-10-11 21:18:02 浏览: 95
如果在使用 ElementUI 的行内编辑组件时,绑定的数据没有发生变化,可能是因为你没有正确地绑定数据或者没有正确地触发数据的更新。
首先,确保你正确地绑定了数据。你可以在 `el-table-column` 中使用 `prop` 属性来绑定数据的字段名,然后在行内编辑组件中使用 `v-model` 来绑定数据的值。例如:
```
<template>
<el-table :data="tableData">
<el-table-column prop="name" label="Name">
<template slot-scope="{ row }">
<el-input v-model="row.name" />
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
],
};
},
};
</script>
```
其次,确保你在行内编辑组件中正确地触发了数据的更新。在 ElementUI 的行内编辑组件中,当用户完成编辑并点击确认按钮时,会触发 `cell-submit` 事件。你可以监听这个事件,在事件处理函数中手动更新数据。例如:
```
<template>
<el-table :data="tableData">
<el-table-column prop="name" label="Name">
<template slot-scope="{ row }">
<el-input v-model="row.name" @keyup.enter.native="onCellSubmit(row)" />
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
],
};
},
methods: {
onCellSubmit(row) {
this.$nextTick(() => {
const index = this.tableData.findIndex(item => item.id === row.id);
this.tableData.splice(index, 1, row);
});
},
},
};
</script>
```
在这个例子中,我们监听了 `@keyup.enter.native` 事件,在用户按下回车键时触发 `onCellSubmit` 方法。在这个方法中,我们使用 `this.$nextTick` 来等待 DOM 更新完成后再更新数据,然后使用 `Array.prototype.splice` 方法来用新的数据替换旧的数据。这样就可以确保数据的更新和同步了。
阅读全文