elementUI el-table二次封装的详细实例

下面我将详细讲解如何进行 ElementUI 的 el-table 二次封装。

首先,我们需要明确以下几点:

1.什么是二次封装?

二次封装是指在原有的组件基础上再次封装,使其更加适用于项目中的使用场景。

2.为什么要进行二次封装?

二次封装有以下几点好处:

  • 可以提高代码的复用性和可维护性;
  • 可以使代码更加简洁易懂;
  • 可以更好的满足项目的需求。

有了以上的认知,我们就可以开始进行 ElementUI 的 el-table 二次封装了。

步骤如下:

1.创建新的组件

首先,在项目中创建一个新的 Vue 组件,例如 table.vue,然后引入 ElementUI 的 el-table 组件。

<template>
  <el-table
    :data="tableData"
    style="width: 100%">
    <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>
</template>

<script>
import { ElTable, ElTableColumn } from 'element-ui'

export default {
  components: {
    ElTable,
    ElTableColumn,
  },
  props: {
    tableData: {
      type: Array,
      default: [],
    },
  },
}
</script>

2.封装 el-table 属性

在引入的 el-table 组件中,我们可以发现它有很多属性可以设置,例如 class、style、data、column等等。如果我们需要对这些属性进行二次封装,我们可以这样做:

<template>
  <el-table
    :data="tableData"
    :class="tableClass"
    :style="tableStyle">
    <el-table-column
      v-for="column in columns"
      :key="column.prop"
      :prop="column.prop"
      :label="column.label">
    </el-table-column>
  </el-table>
</template>

<script>
import { ElTable, ElTableColumn } from 'element-ui'

export default {
  components: {
    ElTable,
    ElTableColumn,
  },
  props: {
    tableData: {
      type: Array,
      default: [],
    },
    tableClass: {
      type: String,
      default: '',
    },
    tableStyle: {
      type: Object,
      default: () => ({}),
    },
    columns: {
      type: Array,
      default: () => [],
    },
  },
}
</script>

在这个封装后的 el-table 组件中,我们添加了三个属性:tableClass、tableStyle、columns,其中 columns 是一个数组,用来设置表格列的属性。

3.封装 el-table 方法

在 el-table 中,还有很多方法可以调用,例如 sort-change、select、row-click等等。如果我们需要对这些方法进行二次封装,我们可以这样做:

<template>
  <el-table
    :data="tableData"
    :class="tableClass"
    :style="tableStyle"
    @sort-change="handleSortChange"
    @select="handleSelect"
    @row-click="handleRowClick">
    <el-table-column
      v-for="column in columns"
      :key="column.prop"
      :prop="column.prop"
      :label="column.label">
    </el-table-column>
  </el-table>
</template>

<script>
import { ElTable, ElTableColumn } from 'element-ui'

export default {
  components: {
    ElTable,
    ElTableColumn,
  },
  props: {
    tableData: {
      type: Array,
      default: [],
    },
    tableClass: {
      type: String,
      default: '',
    },
    tableStyle: {
      type: Object,
      default: () => ({}),
    },
    columns: {
      type: Array,
      default: () => [],
    },
  },
  methods: {
    handleSortChange() {
      // 二次封装的 sort-change 方法
    },
    handleSelect() {
      // 二次封装的 select 方法
    },
    handleRowClick() {
      // 二次封装的 row-click 方法
    },
  },
}
</script>

在这个封装后的 el-table 组件中,我们添加了三个方法:handleSortChange、handleSelect、handleRowClick,可以在这些方法中对 el-table 中原有的方法进行二次封装,从而更好的满足项目的需求。

以上是对 ElementUI 的 el-table 二次封装的详细步骤说明。

下面,我会给出两条示例说明:

1.表格数据需要从后端接口获取,需要在 table.vue 中使用 axios 请求数据,并且在请求成功后将数据传递给 el-table 组件。

<template>
  <el-table
    :data="tableData"
    :class="tableClass"
    :style="tableStyle"
    @sort-change="handleSortChange"
    @select="handleSelect"
    @row-click="handleRowClick">
    <el-table-column
      v-for="column in columns"
      :key="column.prop"
      :prop="column.prop"
      :label="column.label">
    </el-table-column>
  </el-table>
</template>

<script>
import { ElTable, ElTableColumn } from 'element-ui'
import axios from 'axios'

export default {
  components: {
    ElTable,
    ElTableColumn,
  },
  props: {
    tableClass: {
      type: String,
      default: '',
    },
    tableStyle: {
      type: Object,
      default: () => ({}),
    },
    columns: {
      type: Array,
      default: () => [],
    },
    url: {
      type: String,
      default: '',
    },
  },
  data() {
    return {
      tableData: [],
    }
  },
  mounted() {
    this.getTableData()
  },
  methods: {
    getTableData() {
      axios.get(this.url).then((res) => {
        this.tableData = res.data
      })
    },
    handleSortChange() {
      // 二次封装的 sort-change 方法
    },
    handleSelect() {
      // 二次封装的 select 方法
    },
    handleRowClick() {
      // 二次封装的 row-click 方法
    },
  },
}
</script>

在这个示例中,我们添加了一个 url 属性,用来设置请求数据的接口地址。在组件的 mounted 钩子中,我们调用 getTableData 方法来请求数据并将数据传递给了 el-table 组件。

2.在表格中设置操作栏,可以对数据进行编辑、删除等操作。

<template>
  <el-table
    :data="tableData"
    :class="tableClass"
    :style="tableStyle"
    @sort-change="handleSortChange"
    @select="handleSelect"
    @row-click="handleRowClick">
    <el-table-column
      v-for="column in columns"
      :key="column.prop"
      :prop="column.prop"
      :label="column.label">
    </el-table-column>
    <el-table-column
      label="操作">
      <template #default="{ row }">
        <el-button @click="handleEdit(row)">编辑</el-button>
        <el-button @click="handleDelete(row)">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
</template>

<script>
import { ElTable, ElTableColumn } from 'element-ui'

export default {
  components: {
    ElTable,
    ElTableColumn,
  },
  props: {
    tableData: {
      type: Array,
      default: [],
    },
    tableClass: {
      type: String,
      default: '',
    },
    tableStyle: {
      type: Object,
      default: () => ({}),
    },
    columns: {
      type: Array,
      default: () => [],
    },
  },
  methods: {
    handleSortChange() {
      // 二次封装的 sort-change 方法
    },
    handleSelect() {
      // 二次封装的 select 方法
    },
    handleRowClick() {
      // 二次封装的 row-click 方法
    },
    handleEdit(row) {
      // 编辑操作
    },
    handleDelete(row) {
      // 删除操作
    },
  },
}
</script>

在这个示例中,我们添加了一个操作列,用来显示编辑、删除等操作。在操作列的模板中,我们添加了两个 el-button 组件,用来触发编辑、删除事件。在组件的 methods 中,我们添加了 handleEdit、handleDelete 方法,用来处理编辑、删除操作。

以上就是二次封装 el-table 的详细实例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:elementUI el-table二次封装的详细实例 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Mac 将mysql路径加入环境变量的方法

    以下是详细讲解 Mac 将 mysql 路径加入环境变量的方法的完整攻略。 1. 查看 Mysql 安装路径 首先需要查看一下你的 Mysql 安装路径。一般情况下,Mysql 的安装路径为 /usr/local/mysql。如果你使用 Homebrew 安装过 Mysql,则安装路径为 /usr/local/Cellar/mysql/{version_nu…

    other 2023年6月27日
    00
  • curl获取状态码为302如何获取200

    Curl获取状态码为302如何获取200 当我们使用Curl命令在命令行中访问一个网站时,我们有时会得到一个状态码为302的结果。这意味着web服务器已经将请求重定向到了另一个页面,这通常是因为该网站发生了一些更改或者网络连接中断等问题。 如果我们想获取重定向后的页面状态码为200的结果,该怎么办呢?下面是一些解决方法: 方法一:使用-c参数保存cookie…

    其他 2023年3月28日
    00
  • 详解spring boot 使用application.properties 进行外部配置

    来一份详细的“详解 Spring Boot 使用 application.properties 进行外部配置”的攻略吧。 简介 Spring Boot 是一种快速构建 Spring 应用程序的工具,借助于 Spring Boot,我们可以更轻松快捷地创建和配置 Spring 应用程序。application.properties 文件是 Spring Boo…

    other 2023年6月25日
    00
  • 使用svn进行版本控制

    使用svn进行版本控制是多人协作开发中必不可少的工具,下面我将详细讲解操作步骤。 1. 安装svn软件 在操作系统中安装svn软件,常见的svn软件包括TortoiseSVN(Windows平台)和svn命令行工具。 2. 创建svn版本库 svn版本库通常用于存储代码和版本信息,版本库可以使用svnadmin命令来创建。以下是创建一个版本库的示例: svn…

    other 2023年6月27日
    00
  • DOS批处理高级教程 第四章 批处理中的变量

    DOS批处理高级教程 第四章 批处理中的变量 介绍 在DOS批处理中,变量是一种非常有用的工具,可以用来存储和操作数据。本教程将详细介绍批处理中的变量的使用方法。 定义变量 在批处理中,可以使用set命令来定义变量。变量名通常以一个%符号开头和结尾。下面是一个示例: @echo off set myVariable=Hello World echo %myV…

    other 2023年8月9日
    00
  • 用ASP脚本命令重启服务器

    要用ASP脚本命令重启服务器,需要以下步骤: 1. 创建ASP页面 首先,在服务器上创建一个ASP页面,例如“restart.asp”。使用文本编辑器创建页面,并将以下命令粘贴到页面中: <%@ Language=VBScript %> <% Set ws = GetObject( "winmgmts:{impersonation…

    other 2023年6月27日
    00
  • 可以查询系统用户名sid的vbs

    首先,系统用户名对应着Windows系统中的Security Identifier(SID),每个用户都有唯一的SID标识符。查询系统用户名的方法可以使用VBScript语言编写,以下是具体的攻略步骤。 步骤一:编写vbs代码,定位用户的SID值。 在vbs代码区块中编写以下代码,通过WScript实现获取当前用户的用户名。 Set objWshNetwor…

    other 2023年6月27日
    00
  • 圣西罗足球场-景点介绍

    以下是关于圣西罗足球场景点介绍的完整攻略,包括基本概念、历史背景、景点介绍和两个示例说明。 圣西罗足球场景点介绍的基本概念 圣西罗足球场是位于意大利米兰的一座足球场,是AC米兰和国际米兰两支足球俱乐部的主场。圣西罗足球场是世界上最著名的足球场之一,也是欧洲最大的足球场之一。 圣西罗足球场景点介绍的历史背景 圣西罗足球场建于1926年,最初是为了举办1928年…

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