美文网首页
Element-Ui el-table 动态添加行

Element-Ui el-table 动态添加行

作者: Porsche_Apo | 来源:发表于2023-12-07 14:55 被阅读0次

发布时间:2023-12-08 14:24:51

一、在项目需要使用

这个需求主要是在项目中需要用到

1.点击新增按钮,可以实现新增行。

2.在每个列里面可以进行输入。

3.可以删除新增的行,包括数据。

二、HTML代码

1.主要是循环每一个列,而且这些列都是动态,根据父组件传过来的,这样可以动态的决定要多少的数据。

2.:data=“tableData” 这个才是决定行的代码,可以通过push的方法新增行或者减少行。

<template>

  <div class="add-table">

    <el-button class="mb10" size="mini" type="primary" @click="addTableRow">新 增</el-button>

    <el-table :data="tableData" stripe highlight-current-row border ref="addTableRowRef">

      <el-table-column type="index" label="序号" align="center" width="50"></el-table-column>

      <el-table-column align="center" v-for="(item,index) in dataList" :prop="item.code" :label="item.name" :key="index">

        <template slot-scope="scope">

          <el-input v-model="scope.row[item.code]"></el-input>

        </template>

      </el-table-column>

      <el-table-column label="操作" width="120" align="center">

        <template slot-scope="scope">

          <el-button size="mini" type="danger" icon="el-icon-delete"  @click="handleDeleteRow(scope.$index,tableData)">删除</el-button>

        </template>

      </el-table-column>

    </el-table>

  </div>

</template>

三、JavaScript代码

<script>

export default {

  name: 'AddTable',

  props: {

    rowTitle: {

      type: Array,

      default() {

        return []

      }

    },

    rowObj: {

      type: Object,

      default() {

        return {}

      }

    }

  },

  watch: {

    rowTitle: {

      handler: function(newValue) {

        if(newValue.length > 0) {

          this.dataList = newValue

        }

      },

      immediate: true

    }

  },

  data() {

    return {

      tableData: [],

      dataList: []

    }

  },

  methods: {

  addTableRow() {

      var addObj = {};

      this.rowTitle.forEach(el => {

        addObj[el.code] = ''

      })

      this.tableData.push(addObj);

      // this.tableData.push(this.rowObj);

      setTimeout(() => {

        this.$refs.addTableRowRef.setCurrentRow(addObj);

      }, 10);

    },

    handleDeleteRow(index, rows) {

      this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {

          confirmButtonText: '确定',

          cancelButtonText: '取消',

          type: 'warning'

        }).then(() => {

          rows.splice(index, 1)

          this.$message({

            type: 'success',

            message: '删除成功!'

          });

        }).catch(() => {

          this.$message({

            type: 'info',

            message: '已取消删除'

          });         

        });

    },

  },

}

</script>

四、看图片(效果)

原文:http://www.hzhcontrols.com/new-1857371.html

本文版权归原作者所有

欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

相关文章