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+vant实现商品列表批量倒计时功能

    下面是详细的讲解。 环境搭建 首先,我们需要安装 Node.js 环境和 Vue CLI 脚手架。其中 Vue CLI 脚手架可以通过 npm 安装,具体的安装命令如下: npm install -g @vue/cli 创建项目 安装完 Vue CLI 后,我们就可以使用它来创建一个 Vue 项目了。在命令行输入下面的命令来创建一个基本的 Vue 项目: v…

    Vue 2023年5月29日
    00
  • vue项目打包部署后默认路由不正确的解决方案

    首先,我们需要理解打包过程中的路由问题。在vue项目中,路由由路由表文件(router/index.js)控制,如果不指定默认路由,就会采用默认的路由配置方式,即会访问localhost:8080/#/,但是在部署后,如果直接访问网站地址,就无法正确渲染网页,因为在服务器中,项目的router.base需要指定为网站地址,而不是默认的localhost:80…

    Vue 2023年5月28日
    00
  • Vue动态表单的应用详解

    下面是关于“Vue动态表单的应用详解”的完整攻略。 简介 Vue动态表单的应用指的是根据不同的数据进行表单渲染,并可以根据用户的不同操作对表单进行相应的变动。这种技术通常被应用于一些需要根据不同的业务场景生成不同表单的场合,例如表单生成器、问卷调查等。 实现方法 实现 Vue 动态表单的关键在于动态渲染表单,引入 element-ui 的动态表单是实现这个功…

    Vue 2023年5月28日
    00
  • 详解Vue组件实现tips的总结

    我来为您详细讲解“详解Vue组件实现tips的总结”的完整攻略。 一、什么是tips tips是一种浮动提示框,通常用于提示用户需要注意的内容。在Vue组件中实现tips功能,可以提升用户体验,让用户更加方便地获取信息。 二、实现方式 Vue组件实现tips的方式主要有以下几种: 1. 使用原生JS实现 使用原生JS编写tips功能的代码量较大,而且需要考虑…

    Vue 2023年5月27日
    00
  • vue组件库的在线主题编辑器的实现思路

    让我来详细讲解一下“Vue组件库的在线主题编辑器的实现思路”的完整攻略。 简介 Vue组件库的在线主题编辑器可以让用户在浏览器中快速地在前端组件之间切换不同的主题,实现对组件样式的高效编辑和定制。实现思路主要分为以下几个步骤: 构建基于Vue的组件库 实现主题JSON文件的存储和读取 实现在浏览器中编辑主题的可视化交互界面 实现主题对组件的动态更换 下面我针…

    Vue 2023年5月28日
    00
  • vue网站优化实战之秒开网页

    下面是具体的攻略: 1. 优化网络请求 压缩文件 压缩前端文件是一个非常常见的优化手段,通常使用Gzip或者Brotli。Gzip是一种广泛使用的压缩算法,可以减小文件大小并改善网页加载速度。而Brotli是Google开发的一种更高效的压缩算法,与Gzip相比可以达到更高的压缩率。可以在服务器端配置,启用Gzip和Brotli压缩。 使用CDN 使用CDN…

    Vue 2023年5月28日
    00
  • vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)

    下面就来详细讲解如何使用vue+canvas实现炫酷时钟效果的倒计时插件,让网站更加生动有趣。 准备工作 首先需要安装vue和canvas的依赖: npm install vue canvas –save 然后在vue的入口文件中引入canvas: import Vue from ‘vue’ import canvas from ‘canvas’ Vue.…

    Vue 2023年5月29日
    00
  • mpvue开发音频类小程序踩坑和建议详解

    mpvue开发音频类小程序踩坑和建议详解 1. 前言 mpvue 是一个基于 Vue.js 核心的高性能小程序开发框架。它传承了 Vue.js 的语法风格和开发习惯,在小程序开发中尽可能的减少了学习成本和上手难度。同时,mpvue 利用 Webpack 和 Vue.js 的自身特性,将组件和业务逻辑代码进行分离抽离,维护更加方便易用。 在开发小程序中,音频类…

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