vue表格使用插槽动态添加表格行
时间: 2024-07-22 13:01:22 浏览: 63
Vue表格通常会利用`v-for`指令结合模板插槽(Slots)的功能来实现动态添加表格行。插槽允许你在组件内部定义一些区域,开发者可以在运行时通过子组件传递内容到这些区域,比如创建新的表格行。
例如,在使用Element UI的`el-table`组件时,你可以这样做:
```html
<template>
<el-table :data="tableData">
<!-- 表头部分 -->
<el-table-column type="index"></el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<!-- 插槽用于动态添加行 -->
<template slot="default">
<el-table-row v-for="(item, index) in tableRows" :key="index">
<el-table-cell>Row {{ index + 1 }}</el-table-cell>
<el-table-cell>{{ item.name }}</el-table-cell>
<el-table-cell>{{ item.age }}</el-table-cell>
</el-table-row>
</template>
</el-table>
<!-- 使用按钮添加新行 -->
<button @click="addRow">新增一行</button>
</template>
<script>
export default {
data() {
return {
tableData: [], // 初始化表格数据
tableRows: [] // 存放需要动态插入的数据
};
},
methods: {
addRow() {
this.tableRows.push({ name: '新用户', age: 0 }); // 添加新行数据
}
}
};
</script>
```
在这个例子中,`default`插槽会在每一行的位置上渲染。当点击“新增一行”按钮时,`addRow`方法会被触发,将新数据添加到`tableRows`数组,进而动态生成新的表格行。
阅读全文
相关推荐

















