vue2实现表格嵌套表格----二级列表

一、引入view-ui

1、打开新建的项目,打开终端,下载view-ui依赖包

在这里插入图片描述
到这一步,说明下载成功了
在这里插入图片描述

2、main.js引入

在这里插入图片描述

二、项目加载表格

1、打开iview官网,找到表格这一项,然后看到有一个是可下拉的表格

在这里插入图片描述
根据下面这种图片可看到,想要实现下拉的表格,首先再colums数据设置这一项,指定type为expand,
然后如果想要再下拉配置项中设置复杂内容的时候,可以使用render函数
在这里插入图片描述
然后,开写,先把内容粘贴到项目中去,

<template>
  <div class="hello">
    <Table :columns="columns" :data="data"></Table>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  data() {
    return {
      columns: [
                    {
                        type: 'expand',
                        width: 50,
                        render: (h, { row: { name, age } }) => {
                            return h('div', name + '-' + age)
                        }
                    },
                    {
                        title: 'Name',
                        key: 'name'
                    },
                    {
                        title: 'Age',
                        key: 'age'
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    }
                ],
                data: [
                    {
                        name: 'John Brown',
                        age: 18,
                        address: 'New York No. 1 Lake Park',
                        job: 'Data engineer',
                        interest: 'badminton',
                        birthday: '1991-05-14',
                        book: 'Steve Jobs',
                        movie: 'The Prestige',
                        music: 'I Cry'
                    },
                    {
                        name: 'Jim Green',
                        age: 25,
                        address: 'London No. 1 Lake Park',
                        job: 'Data Scientist',
                        interest: 'volleyball',
                        birthday: '1989-03-18',
                        book: 'My Struggle',
                        movie: 'Roman Holiday',
                        music: 'My Heart Will Go On'
                    },
                    {
                        name: 'Joe Black',
                        age: 30,
                        address: 'Sydney No. 1 Lake Park',
                        job: 'Data Product Manager',
                        interest: 'tennis',
                        birthday: '1992-01-31',
                        book: 'Win',
                        movie: 'Jobs',
                        music: 'Don’t Cry'
                    },
                    {
                        name: 'Jon Snow',
                        age: 26,
                        address: 'Ottawa No. 2 Lake Park',
                        job: 'Data Analyst',
                        interest: 'snooker',
                        birthday: '1988-7-25',
                        book: 'A Dream in Red Mansions',
                        movie: 'A Chinese Ghost Story',
                        music: 'actor'
                    }
                ]
    }
  },
}
</script>


<style scoped>

</style>

然后就可以看到项目中的表格了,我这里是新开了一个项目,所以页面上什么都没有
在这里插入图片描述
此时的表格下拉功能就实现了,然后再此功能上添加二级表头,可以看到官网说的使用render函数,于是,我们就写一个render函数

三、修改为二级表格

1、新建一个组件,里面写上自己想要的表格格式,我这里为了方便,于是直接引用官网的第一个表格

<template>
  <div>
    <Table border :columns="columns" :data="data"></Table>
 </div>
</template>
<script >
export default {
  props: {

   },
   data() {
    return {
      columns: [
                    {
                        title: 'Name',
                        key: 'name'
                    },
                    {
                        title: 'Age',
                        key: 'age'
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    }
                ],
                data: [
                    {
                        name: 'John Brown',
                        age: 18,
                        address: 'New York No. 1 Lake Park',
                        date: '2016-10-03'
                    },
                    {
                        name: 'Jim Green',
                        age: 24,
                        address: 'London No. 1 Lake Park',
                        date: '2016-10-01'
                    },
                    {
                        name: 'Joe Black',
                        age: 30,
                        address: 'Sydney No. 1 Lake Park',
                        date: '2016-10-02'
                    },
                    {
                        name: 'Jon Snow',
                        age: 26,
                        address: 'Ottawa No. 2 Lake Park',
                        date: '2016-10-04'
                    }
                ]
    }
   },
  created() {},
  mounted() {},
  beforeDestroy() {}
}
</script>
<style scoped></style>

2、在HelloWorld.vue页面引入这个组件,并注册

// 引入
import SecontTable from './SecontTable.vue';
// 注册
 components: {
    SecontTable,
  },

3、HelloWorld.vue-----在render函数中,调用这个组件

并且传了个值dataList1到组件中去,记得返回组件中接收一下这个列表

   render: (h, { row }) => {
            return h(SecontTable, {
              props: {
                dataList1: row,
              },
              on: {
                onsubmit: () => {
                  console.log('-------------------');
                },
              },
            });
          },
// SecontTable.vue 中接收传值,我这里先不使用,如果后期需要根据这个里面的内容调接口或者渲染内容,直接使用就可以
props: {
    dataList1:{
      type:Array
    }
   },

四、到这里就可以看到完整的效果了

在这里插入图片描述

el-table是Element UI库中的一个表格组件,用于展示数据。要实现el-table的二级懒加载,可以通过以下步骤: 1. 首先,在el-table中设置一个列(column)为可展开的列,通过设置`type`属性为`expand`,并且设置`expandable`属性为`true`。例如: ```html <el-table :data="tableData" style="width: 100%"> <el-table-column type="expand" :expandable="true"> <!-- 这里放置展开内容的模板 --> </el-table-column> <!-- 其他列的定义 --> </el-table> ``` 2. 接下来,在展开内容的模板中,可以使用`template`标签或者自定义组件来定义展开的内容。在展开内容中,可以使用异步请求获取二级数据,并将其绑定到展开内容的模板中。例如: ```html <template slot-scope="props"> <div> <!-- 这里放置展开内容的具体内容 --> <el-table :data="props.row.subData" style="width: 100%"> <!-- 定义二级表格的列 --> </el-table> </div> </template> `` 3. 在获取二级数据的时候,可以使用Vue的异步请求库(如axios)发送请求,并将获取到的数据绑定到展开内容的模板中。例如: ```javascript // 在展开内容的模板中,通过异步请求获取二级数据 methods: { async fetchData(row) { // 发送异步请求获取二级数据 const response = await axios.get('your_api_url'); // 将获取到的数据绑定到展开内容的模板中 row.subData = response.data; } } ``` 这样,当用户点击展开按钮时,会触发`fetchData`方法,异步请求获取二级数据,并将其绑定到展开内容的模板中,实现二级懒加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值