vuejs element table 表格添加行,修改,单独删除行,批量删除行操作

yizhihongxing

以下是“vuejs element table 表格添加行,修改,单独删除行,批量删除行操作”的攻略。

添加行

要添加行,首先需要在data中定义一个空的数组来存放表格数据。然后,在模板中使用el-table组件和el-table-column组件来渲染表格,并给el-table组件绑定数据源。

接下来,我们可以在模板中添加一个类似“添加行”的按钮,当用户点击这个按钮时,在data中定义的数据数组中新增一条数据,并将其渲染到表格中。

下面是一个简单的示例:

<template>
  <div>
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
      <el-table-column label="操作">
        <template #default="{ row }">
          <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-button type="primary" @click="handleAdd">添加行</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: []
    }
  },
  methods: {
    handleAdd() {
      this.tableData.push({
        name: '',
        age: '',
        address: ''
      })
    }
  }
}
</script>

修改行

要修改行,我们可以在每一行的操作列中添加一个“编辑”按钮,用户点击该按钮时,可以弹出一个表单,允许用户修改该行数据。

我们需要在data中定义一个变量来存储当前正在编辑的行的索引,然后在模板中判断该变量的值,如果为当前行的索引,则显示表单用于修改数据,否则显示文本用于展示数据。

下面是一个示例:

<template>
  <div>
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名">
        <template #default="{ row }">
          <template v-if="editIndex === row.$index">
            <el-input v-model="row.name"></el-input>
          </template>
          <template v-else>{{ row.name }}</template>
        </template>
      </el-table-column>
      <el-table-column prop="age" label="年龄">
        <template #default="{ row }">
          <template v-if="editIndex === row.$index">
            <el-input v-model.number="row.age"></el-input>
          </template>
          <template v-else>{{ row.age }}</template>
        </template>
      </el-table-column>
      <el-table-column prop="address" label="地址">
        <template #default="{ row }">
          <template v-if="editIndex === row.$index">
            <el-input v-model="row.address"></el-input>
          </template>
          <template v-else>{{ row.address }}</template>
        </template>
      </el-table-column>
      <el-table-column label="操作">
        <template #default="{ row }">
          <el-button type="text" size="small" @click="handleEdit(row)">编辑</el-button>
          <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 18, address: '北京市' },
        { name: '李四', age: 20, address: '上海市' },
        { name: '王五', age: 22, address: '广州市' }
      ],
      editIndex: -1
    }
  },
  methods: {
    handleEdit(row) {
      this.editIndex = row.$index
    },
    handleDelete(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    }
  }
}
</script>

单独删除行

要单独删除行,我们可以给表格中每一行的操作列添加一个“删除”按钮,用户点击该按钮时可以删除该行。

我们可以在模板中为每一行的操作列绑定一个方法,当用户点击该按钮时,将当前行作为参数传入方法。

下面是一个示例:

<template>
  <div>
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
      <el-table-column label="操作">
        <template #default="{ row }">
          <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 18, address: '北京市' },
        { name: '李四', age: 20, address: '上海市' },
        { name: '王五', age: 22, address: '广州市' }
      ]
    }
  },
  methods: {
    handleDelete(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    }
  }
}
</script>

批量删除行

要批量删除行,我们可以在表格头部添加一个“全选”复选框,当用户勾选该复选框时,将所有行的选中状态都改变。我们还需要在每一行前添加一个复选框,用于单独选择行。

我们可以在模板中使用el-table-column组件来渲染复选框列和操作列。

下面是一个示例:

<template>
  <div>
    <el-table :data="tableData" ref="table">
      <el-table-column type="selection"></el-table-column>
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
      <el-table-column label="操作">
        <template #default="{ row }">
          <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-button type="danger" @click="handleBatchDelete">批量删除</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 18, address: '北京市' },
        { name: '李四', age: 20, address: '上海市' },
        { name: '王五', age: 22, address: '广州市' }
      ]
    }
  },
  methods: {
    handleDelete(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    },
    handleBatchDelete() {
      const selection = this.$refs.table.selection
      selection.forEach(row => {
        const index = this.tableData.indexOf(row)
        if (index !== -1) {
          this.tableData.splice(index, 1)
        }
      })
    }
  }
}
</script>

需要注意的是,使用el-table组件批量删除行时,需要先获取到选中的行,可以使用this.$refs.table.selection来获取。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vuejs element table 表格添加行,修改,单独删除行,批量删除行操作 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue3引入Element-plus的详细步骤记录

    以下是使用vue3引入Element-plus的详细步骤记录: 第一步:安装Element-plus 在项目中使用npm安装Element-plus: npm install element-plus –save 第二步:引入Element-plus 在main.js中引入Element-plus并注册组件: import { createApp } fr…

    Vue 2023年5月28日
    00
  • vue+iview实现文件上传

    下面是详细讲解”vue+iview实现文件上传”的完整攻略: 准备工作 在项目中安装vue和iview npm install vue iview –save 在main.js中引入vue和iview,并配置相关的组件 import Vue from ‘vue’ import iView from ‘iview’ import ‘iview/dist/st…

    Vue 2023年5月28日
    00
  • vue实现前端列表多条件筛选

    下面是“vue实现前端列表多条件筛选”的完整攻略: 准备工作 首先需要引入Vue.js和element-ui组件库。除此之外,还需要一个数据列表和一个查询条件对象。 实现步骤 1. 查询条件的展示 使用element-ui组件库提供的Form组件渲染查询表单。每个查询条件使用FormItem包装,FormItem的label属性即为查询条件的名称,Prop属…

    Vue 2023年5月28日
    00
  • Vue.js添加组件操作示例

    当您需要在Vue.js网页应用程序中添加组件时,您可以按照以下攻略进行操作: 1. 创建一个新的Vue组件 要在Vue.js应用程序中添加组件,首先需要使用Vue.js创建一个新的组件。可以按照以下步骤操作: Vue.component(‘my-component’, { template: ‘<div>This is my first Vue.…

    Vue 2023年5月27日
    00
  • 一个Vue页面的内存泄露分析详解

    一、什么是内存泄露? 首先,了解什么是内存泄露。内存泄露是指程序在申请动态内存后,无法释放已经申请的内存空间的情况。如果出现内存泄露,应用程序占用的内存会越来越多,进而引发系统的崩溃。 二、Vue页面中常见的内存泄露 Vue开发中常见的内存泄露问题通常有: 1.事件绑定不当:在Vue中,dom事件绑定需要在组件的生命周期hook函数中进行绑定,而不是在cre…

    Vue 2023年5月28日
    00
  • Vite+Electron快速构建VUE3桌面应用的实现

    下面我将为你详细讲解 “Vite + Electron 快速构建 Vue3 桌面应用的实现”。 简介 Vite 是一个基于 JavaScript 的构建工具,旨在提供一种快速开发的体验。它专注于提供简单的配置、快速的热更新功能以及媲美于 Webpack 的构建功能,对于快速实现前端开发者的需求非常有帮助。 Electron 是一个基于 Node.js 和 C…

    Vue 2023年5月27日
    00
  • Vue render深入开发讲解

    下面我将详细介绍“Vue render深入开发讲解”的完整攻略。 什么是Vue的render函数? Vue的render函数是用于构建虚拟DOM的函数。它接收一个createElement函数作为参数,然后利用这个函数构建一个虚拟DOM并返回。这个虚拟DOM会作为Vue的模板编译结果,最终渲染到页面上。 render函数的基本用法 render函数的基本用法…

    Vue 2023年5月28日
    00
  • Vue中render函数的使用方法

    下面是对于Vue中render函数的使用方法的完整攻略。 什么是render函数? render函数是Vue中用于生成元素的函数,我们可以在这里对元素进行逻辑处理和渲染。在渲染过程中,我们可以利用一个包含h函数的上下文对象来生成元素,h函数会返回一个虚拟节点。 render函数的语法 render (h) { return h(‘div’, { attrs:…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部