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

以下是“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日

相关文章

  • vue中filters 传入两个参数 / 使用两个filters的实现方法

    在 Vue 中,可以使用 filter 过滤器来处理模板中的数据。filter 在显示数据之前对其进行处理,比如对字符串格式化、将时间格式化等等。 在 Vue 中,我们可以定义一个 filter 来处理一些数据,此时这个 filter 就是一个全局的 filter。可以被任何组件进行调用。 现在我们来详细讲解“vue中filters 传入两个参数 / 使用两…

    Vue 2023年5月27日
    00
  • 通过源码分析Vue的双向数据绑定详解

    作为网站的作者,我非常乐意为大家讲解“通过源码分析Vue的双向数据绑定详解”的完整攻略。下面将详细介绍这个过程。 什么是双向数据绑定 简单来说,双向数据绑定是指数据的变化能够在视图中自动反映出来,同时视图中的变化也能够自动同步到数据中去,即数据和视图之间的双向绑定。在Vue中,双向数据绑定是由v-model指令来实现的。 Vue中双向数据绑定的实现原理 Vu…

    Vue 2023年5月28日
    00
  • vue+video.js实现视频播放列表

    下面是关于“vue+video.js实现视频播放列表”的完整攻略。 1. 准备工作 安装 video.js 首先,我们需要安装 video.js。可以使用 npm 命令进行安装: npm install video.js –save 引入 video.js 在 Vue 项目的入口文件(比如 main.js)中,需要引入 video.js 和 video-j…

    Vue 2023年5月28日
    00
  • Vue实现时间轴功能

    下面是Vue实现时间轴功能的完整攻略,包含以下几个步骤: 设计数据结构 在实现时间轴功能前,我们需要先设计出所需的数据结构,以便后续的实现。一般来说,时间轴需要包含以下内容: 时间节点的时间戳 时间节点的标题 时间节点的内容 我们可以将这些内容封装成一个对象,例如: { timestamp: ‘2021-04-01’, title: ‘第一条时间线’, co…

    Vue 2023年5月28日
    00
  • vue-cli+webpack记事本项目创建

    下面是“vue-cli+webpack记事本项目创建”的完整攻略: 一、前置条件 在开始构建项目之前,请确保已经安装以下软件: Node.js: 版本>=8,用于运行vue-cli。 npm: Node.js自带的包管理工具。 二、创建vue-cli项目 打开命令行工具,输入以下命令安装vue-cli: npm install -g vue-cli 使…

    Vue 2023年5月29日
    00
  • Vue3使用时应避免的10个错误总结

    下面就是关于“Vue3使用时应避免的10个错误总结”的完整攻略。 1. 避免在setup函数之外使用响应式数据 setup函数之外的代码主要是为了定义变量或者引用组件。我们还需要明确的一点就是,setup函数是在组件实例被创建之前被调用的,所以setup函数外部的代码是在它之前执行的。如果你使用了响应式数据去创建变量或者引用组件,就会出现bug。 示例: c…

    Vue 2023年5月29日
    00
  • 深入浅析vue-cli@3.0 使用及配置说明

    深入浅析vue-cli@3.0 使用及配置说明 什么是vue-cli@3.0 vue-cli@3.0 是 Vue.js 的脚手架工具,它可以帮助我们快速生成一个基于 Vue.js 的项目开发所需的目录和文件,并提供了一些常用的功能,例如:本地开发调试、构建打包、自动化部署等。 vue-cli@3.0 相对于之前的版本,最大的改变是它采用了完全重构的架构,即把…

    Vue 2023年5月28日
    00
  • vue使用websocket概念及示例

    要理解Vue.js如何使用Websocket,我们需要先了解什么是Websocket。Websocket是一种实现全双工通信的协议,它允许浏览器和服务器之间实时通信,而不需要完全依靠HTTP请求响应模式。 接下来,我们将为您介绍如何在Vue.js应用程序中使用Websocket。 步骤1:安装和导入WebSocket应用程序 首先,我们需要安装Websock…

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