在 Element UI 的 el-table 组件中,可以使用 scoped-slot 来自定义表格列的渲染方式。通过在 el-table-column 组件中定义 scopedSlots 属性,可以在表格中渲染自定义的组件或 HTML 代码。结合 v-if 和 v-else 指令,可以实现在点击表格字段时出现输入框的效果。下面是一个示例:handlebarsCopy

<template>
  <el-table :data="tableData">
    <el-table-column prop="name" label="姓名">
      <template #default="{row}">
        <span v-if="!row.editable">{{ row.name }}</span>
        <el-input v-model="row.name" v-else></el-input>
      </template>
    </el-table-column>
    <el-table-column prop="age" label="年龄">
      <template #default="{row}">
        <span v-if="!row.editable">{{ row.age }}</span>
        <el-input v-model.number="row.age" v-else></el-input>
      </template>
    </el-table-column>
    <el-table-column label="操作">
      <template #default="{row}">
        <el-button type="danger" @click="deleteRow(row)">删除</el-button>
        <el-button v-if="!row.editable" @click="editRow(row)">编辑</el-button>
        <el-button v-else @click="saveRow(row)">保存</el-button>
      </template>
    </el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 20 },
        { name: '李四', age: 25 },
        { name: '王五', age: 30 }
      ]
    }
  },
  methods: {
    editRow(row) {
      row.editable = true
    },
    saveRow(row) {
      row.editable = false
    },
    deleteRow(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    }
  }
}
</script>

在上面的示例中,我们使用了 el-table 组件渲染表格数据,并使用了 el-table-column 组件渲染表格列。在表格列中,我们使用了 scoped-slot 来自定义渲染方式,使用了 v-if 和 v-else 指令来根据 editable 属性的值切换组件的显示。在表格列中的操作列中,我们使用了 v-if 和 v-else 指令根据 editable 属性的值切换按钮的显示。在组件的 data 选项中,我们定义了表格数据,并在每行数据中添加了一个 editable 属性,用于判断当前行是否处于编辑状态。在组件的 methods 中,我们定义了 editRowsaveRow 和 deleteRow 三个方法。其中,editRow 方法用于将指定行的 editable 属性设置为 true,以便在点击时将输入框显示出来。saveRow 方法用于将指定行的 editable 属性设置为 false,以便在保存后将输入框隐藏。deleteRow 方法用于删除指定行的数据。

需要注意的是,在双击表格行时,需要将 editable 属性添加到表格数据中,并将其初始值设置为 false。最后,在表格列中的输入框组件中,需要使用 .number 修饰符将输入框的值转换为数字类型。

By lxcss

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注