vue 使用el-table循环生成表格的过程

下面我将详细讲解使用 Vueel-table 循环生成表格的完整攻略。该过程可以分为以下几个步骤:

  1. 引入必须的依赖

首先,需要在你的代码中引入必须的依赖,这包括 Vue 框架及其 Element-UI 组件库。

<!-- index.html -->
<!-- 引入 Vue 和 Element-UI-->
...
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
...
// app.js
// 创建 Vue 实例
new Vue({
  el: '#app',
  data: { 
    // 初始化数据
    tableData: [
      { id: '1', name: 'Lucy', age: '18' },
      { id: '2', name: 'Tom', age: '20' },
      { id: '3', name: 'Lily', age: '22' }
    ]
  }
})
  1. 创建 el-table 表格

Vue 实例中,创建 el-table 表格,并绑定数据 tableData。其中,el-table 的各个属性可以自行参考 Element-UI 官方文档 进行详细设置。

<!-- index.html -->
<!-- 表格部分 -->
<div id="app">
  <el-table :data="tableData">
    <!-- 表头部分 -->
    <el-table-column prop="id" label="编号"></el-table-column>
    <el-table-column prop="name" label="姓名"></el-table-column>
    <el-table-column prop="age" label="年龄"></el-table-column>
  </el-table>
</div>
  1. 循环生成表格数据

接下来,我们需要使用 v-for 指令来循环生成表格数据。我们需要先用 v-for 循环生成 el-table-column 组件,然后再在每个组件内部使用 {{ row.[prop] }} 语法来动态显示每行数据的属性。

<!-- index.html -->
<div id="app">
  <el-table :data="tableData">
    <!-- 循环生成表头 -->
    <el-table-column v-for="column in columns" :key="column.prop" :prop="column.prop" :label="column.label"></el-table-column>
  </el-table>
</div>
// app.js
new Vue({
  el: '#app',
  data: { 
    tableData: [
      { id: '1', name: 'Lucy', age: '18' },
      { id: '2', name: 'Tom', age: '20' },
      { id: '3', name: 'Lily', age: '22' }
    ],
    columns: [
      { prop: 'id', label: '编号' },
      { prop: 'name', label: '姓名' },
      { prop: 'age', label: '年龄' },
      // 可以根据数据实际情况自定义更多列
    ]
  }
})
  1. 自定义表格样式

最后,我们可以根据自己需要对表格样式进行一些自定义。例如,可以使用 slot-scope 自定义表格数据渲染的方式,如下所示:

<!-- index.html -->
<div id="app">
  <el-table :data="tableData">
    <!-- 循环生成表头 -->
    <el-table-column v-for="column in columns" :key="column.prop" :prop="column.prop" :label="column.label">
      <!-- 自定义表格数据的渲染方式 -->
      <template slot-scope="scope">
        <span v-if="column.prop === 'id'">ID {{scope.row.id}}</span>
        <span v-else>{{ scope.row[column.prop] }}</span>
      </template>
    </el-table-column>
  </el-table>
</div>

示例1的完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Vue Table</title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">

    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>

<body>
    <div id="app">
        <el-table :data="tableData">
            <!-- 循环生成表头 -->
            <el-table-column v-for="column in columns" :key="column.prop" :prop="column.prop" :label="column.label">
                <!-- 自定义表格数据的渲染方式 -->
                <template slot-scope="scope">
                    <span v-if="column.prop === 'id'">ID {{scope.row.id}}</span>
                    <span v-else>{{ scope.row[column.prop] }}</span>
                </template>
            </el-table-column>
        </el-table>
    </div>

    <script>
        new Vue({
            el: '#app',
            data: {
                tableData: [{
                        id: '1',
                        name: 'Lucy',
                        age: '18'
                    },
                    {
                        id: '2',
                        name: 'Tom',
                        age: '20'
                    },
                    {
                        id: '3',
                        name: 'Lily',
                        age: '22'
                    }
                ],
                columns: [{
                        prop: 'id',
                        label: '编号'
                    },
                    {
                        prop: 'name',
                        label: '姓名'
                    },
                    {
                        prop: 'age',
                        label: '年龄'
                    },
                    // 可以根据数据实际情况自定义更多列
                ]
            }
        })
    </script>
</body>

</html>

示例2对数据进行了大量处理后再进行显示,完整代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Vue Table</title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">

    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>

<body>
    <div id="app">
        <el-table :data="computedList">
            <!-- 自定义表格头部 -->
            <el-table-column label="所有用户" width="120">
                <template slot-scope="{ row }">
                    <div style="display: flex; align-items: center;">
                        <el-avatar :src="row.avatar" style="margin-right: 12px;"></el-avatar>
                        <span>{{ row.name }}</span>
                    </div>
                </template>
            </el-table-column>
            <el-table-column label="入职时间">
                <template slot-scope="{ row }">
                    {{ formatDate(row.hiredate) }}
                </template>
            </el-table-column>
            <el-table-column label="工龄">
                <template slot-scope="{ row }">
                    {{ calculateSeniority(row.hiredate) }}
                </template>
            </el-table-column>
            <!-- 自定义操作栏 -->
            <el-table-column label="操作">
                <template slot-scope="{ row }">
                    <el-button type="primary" size="mini" @click="click(row)">查看详情</el-button>
                </template>
            </el-table-column>
        </el-table>
    </div>

    <script>
        new Vue({
            el: '#app',
            data: {
                userList: [{
                        name: 'Andy',
                        avatar: 'https://randomuser.me/api/portraits/men/50.jpg',
                        hiredate: '2020-01-01'
                    },
                    {
                        name: 'Bob',
                        avatar: 'https://randomuser.me/api/portraits/men/51.jpg',
                        hiredate: '2019-11-11'
                    },
                    {
                        name: 'Claire',
                        avatar: 'https://randomuser.me/api/portraits/women/52.jpg',
                        hiredate: '2020-03-03'
                    },
                    {
                        name: 'David',
                        avatar: 'https://randomuser.me/api/portraits/men/53.jpg',
                        hiredate: '2018-05-05'
                    }
                ]
            },
            computed: {
                // 对数据进行计算和处理,然后返回表格需要的数据
                computedList() {
                    // 计算每个用户的工龄并添加到对象中
                    return this.userList.map(user => {
                        const seniority = this.calculateSeniority(user.hiredate)
                        return {
                            ...user,
                            seniority
                        }
                    })
                }
            },
            methods: {
                click(row) {
                    console.log(row)
                },
                formatDate(dateString) {
                    const date = new Date(dateString)
                    return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`
                },
                calculateSeniority(hiredateString) {
                    const hiredate = new Date(hiredateString)
                    const now = new Date()
                    const yearDiff = now.getFullYear() - hiredate.getFullYear()
                    const monthDiff = now.getMonth() - hiredate.getMonth()
                    const dayDiff = now.getDate() - hiredate.getDate()
                    return yearDiff * 12 + monthDiff + (dayDiff >= 0 ? 1 : 0)
                }
            }
        })
    </script>
</body>

</html>

以上就是使用 Vue 和 el-table 循环生成表格的完整攻略,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 使用el-table循环生成表格的过程 - Python技术站

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

相关文章

  • 详解vue-cli之webpack3构建全面提速优化

    标题 详解vue-cli之webpack3构建全面提速优化 简介 Vue-cli是Vue框架官方提供的脚手架工具,能够帮助我们快速搭建项目,减少开发成本。而webpack则是目前比较流行的打包工具。本攻略将介绍如何在Vue-cli中使用webpack3构建项目,并进行全面提速优化。 步骤 1. 安装vue-cli 首先,我们需要安装Vue-cli。在命令行中…

    Vue 2023年5月28日
    00
  • vue的传参方式汇总和router使用技巧

    一、介绍 在Vue框架中,我们经常需要进行组件之间的传值,根据传参的方式不同,我们又可以将其分为props、$emit、vuex、router、cookie等等。其中,props与$emit的传参方式主要用于组件之间传值,其余的传参方式则主要用于组件之间以及前后端之间的数据交互。 在本篇文章中,我们将对vue的传参方式进行详细的汇总,同时也会涉及到route…

    Vue 2023年5月27日
    00
  • java Tcp通信客户端与服务器端实例

    Java Tcp通信是一种基于TCP协议的客户端与服务器端的通信方式。Java语言中提供了相应的API,可以方便地进行TCP通信。本文将详细介绍Java Tcp通信的使用方法,并提供两个简单的示例。 1. Java Tcp通信的基本概念 Java Tcp通信需要了解以下基本概念: 服务器端:提供服务程序的一方。服务器程序具有独立运行的能力,等待客户端的连接请…

    Vue 2023年5月28日
    00
  • 深入理解vuex2.0 之 modules

    深入理解vuex2.0 之 modules 在使用 Vuex 状态管理模式时,在项目逐渐庞大、复杂时,我们不可避免需要将 state、mutation、action 拆分成单独的模块,方便单独管理、解耦以及后期维护。这就需要使用 Vuex 的 modules 来进行管理。 使用 modules 我们可以将一个 store 分成多个模块,每个模块都有自己的 s…

    Vue 2023年5月28日
    00
  • JavaScript函数封装随机颜色验证码(完整代码)

    让我来详细讲解“JavaScript函数封装随机颜色验证码(完整代码)”的完整攻略。 题目描述 我们需要开发一个可以生成随机颜色的验证码的JavaScript函数,并将其封装成一个可复用的代码。 解决方案 我们可以通过以下步骤来实现该功能: 第一步:定义变量和函数 首先,我们需要定义一些变量和函数,如下所示: var code, codeLength = 6…

    Vue 2023年5月28日
    00
  • vue2.0组件之间传值、通信的多种方式(干货)

    Vue2.0组件之间传值、通信的多种方式(干货) 在Vue.js中,组件间的通信是一个非常重要的话题。本篇文章将详细介绍Vue2.0中的组件通信方式,以及针对不同场景使用哪种方式更为适合。 props和$emit事件 Vue.js中常用的父组件向子组件传递数据的方式就是通过props属性。在父组件中,我们可以使用v-bind指令将数据传递给子组件,如下所示:…

    Vue 2023年5月27日
    00
  • 关于vue中ref的使用(this.$refs获取为undefined)

    “关于vue中ref的使用(this.$refs获取为undefined)”这个问题,主要是由于vue的生命周期引起的。在组件的生命周期函数created()回调函数中是无法访问到DOM元素上的ref属性的,当然通过$refs也是无法获取到。因为这个时候组件还未被渲染出来,也就是所使用的DOM元素还不存在。所以,在组件的生命周期函数mounted()回调函数…

    Vue 2023年5月27日
    00
  • 使用vue实现HTML页面生成图片的方法

    使用vue实现HTML页面生成图片的方法可以通过js的html2canvas库和canvas2image插件来实现。 一、安装所需依赖 可以通过npm安装html2canvas和canvas2image: npm install html2canvas canvas2image –save 二、页面内引入依赖的JS库 在所需页面入口文件里面引入,并使其成为…

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