iview 中table在自定义列模板通过for循环渲染多个其他组件

需求:在表格的一栏中通过for循环渲染多个CheckBox,效果图如下:

首先看看数据结构,data()中的数据如下:

tableData: [
        {
          page: '启动页',
          allSelect: false,
          pagePermission:true,
          operationPermission: [{key:'新增',status:true},{key:'删除',status:false},{key:'编辑',status:true}],
          dataPermission: false
        },
        {
          page: '轮播广告',
          allSelect: false,
          pagePermission: true,
          operationPermission: [{key:'新增',status:true},{key:'删除',status:true},{key:'编辑',status:false}],
          dataPermission: false
        },
        {
          page: '运营活动',
          allSelect: false,
          pagePermission: true,
          operationPermission: [{key:'新增',status:false},{key:'删除',status:true},{key:'编辑',status:true}],
          dataPermission: true
        }
      ]

for循环渲染的CheckBox如下:

{
          title: '操作权限',
          key: 'operationPermission',
          align: 'center',
          width: 400,
          render: (h, params) => {
            let arr=[];
            params.row.operationPermission.forEach((item,index)=>{
              arr.push(h('Checkbox', {
                  props: {
                    size:'large',
                    value: item.status
                  },
                  style: {
                    marginRight: '20px'
                  },
                  on: {
                    'on-change': () => {
                      console.log(item,index)
                    }
                  }
                }, item.key))
            });
            return h('div',arr)
          }
        }

 

 完整的自定义列渲染数据如下:

columns: [
        {
          title: '页面',
          key: 'page',
          align: 'center',
          width: 200
        },
        {
          title: '全选',
          key: 'allSelect',
          align: 'center',
          width: 100,
          render: (h, params) => {
            return h('div', [
              h('Checkbox', {
                props: {
                  size:'large',
                  value: params.row.allSelect
                },
                style: {
                  marginRight: '5px'
                },
                on: {
                  'on-change': () => {
                    console.log(params.index)
                  }
                }
              }, '全选'),
            ]);
          }
        },
        {
          title: '页面权限',
          key: 'pagePermission',
          align: 'center',
          width: 100,
          render: (h, params) => {
            return h('div', [
              h('Checkbox', {
                props: {
                  size:'large',
                  value: params.row.pagePermission
                },
                style: {
                  marginRight: '5px'
                },
                on: {
                  'on-change': () => {
                    console.log(params.index)
                  }
                }
              }, '查看'),
            ]);
          }
        },
        {
          title: '操作权限',
          key: 'operationPermission',
          align: 'center',
          width: 400,
          render: (h, params) => {
            let arr=[];
            params.row.operationPermission.forEach((item,index)=>{
              arr.push(h('Checkbox', {
                  props: {
                    size:'large',
                    value: item.status
                  },
                  style: {
                    marginRight: '20px'
                  },
                  on: {
                    'on-change': () => {
                      console.log(item,index)
                    }
                  }
                }, item.key))
            });
            return h('div',arr)
          }
        },
        {
          title: '数据权限',
          key: 'dataPermission',
          align: 'center',
          width: 200,
          render: (h, params) => {
            return h('div', [
              h('Checkbox', {
                props: {
                  size:'large',
                  value: params.row.dataPermission
                },
                style: {
                  marginRight: '5px'
                },
                on: {
                  'on-change': () => {
                    console.log(params.index)
                  }
                }
              }, '点击量'),
            ]);
          }
        }
      ]

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值