elementui制作可编辑表格行

当点击某一行的编辑按钮时,单元格变成可输入的状态,点击保存之后变成纯展示状态。

效果如下:

 步骤: 

(1)可编辑可展示的单元格需要两个状态,一个使用input标签包裹,一个使用span标签包裹,二者呈现互斥的状态,通过v-if绑定一个值让他们取反显示

      <el-table-column
        prop="videoName"
        label="视频名称"
        align="center"
        width="250"
      >
        <template slot-scope="scope">
          <!-- 编辑状态下显示 -->
          <el-input
            v-if="isshow[scope.$index]"
            type="text"
            size="mini"
            clearable
            v-model.trim="scope.row.videoName"
          />
          <!-- 展示状态下显示 -->
          <span v-if="!isshow[scope.$index]">{
   
   { scope.row.videoName }}</span>
        </template>
      </el-table-column>

(2)操作按钮也需要两个,一个编辑按钮,一个保存按钮,二者呈现互斥的状态,通过v-if绑定一个值让他们取反显示

      <el-table-column label="操作">
        <template slot-scope="scope">
          <el-button
            v-if="isshow[scope.$index]"
            size="mini"
            type="success"
            icon="el-icon-check"
            @click="handelCheck(scope.$index)"
          />
          <el-button
            v-if="!isshow[scope.$index]"
            size="mini"
            type="primary"
            icon="el-icon-edit"
            @click="handleEdit(scope.$index)"
          />
        </template>
      </el-table-column>

(3)通过this.$set方法改变这个值,值isshow初始值为空数组,是一个全局的变量

  data() {
    return {
      // 控制参数表格输入显示
      isshow: [],
    };
  methods: {
    /**
     * @description: 编辑单行数参数
     * @param {index} 当前行索引值
     * @return void
     */
    handleEdit(index) {
      this.$set(this.isshow, index, true);
    },

    /**
     * @description: 保存单行参数
     * @param {index} 当前行索引值
     * @return void
     */
    handelCheck(index) {
      this.$set(this.isshow, index, false);
    },
  },

猜你喜欢

转载自blog.csdn.net/m0_61843874/article/details/128038341