iview动态显示表格数据进阶版

如何在js部分花样显示表格数据

1.表头渲染(在表头后面添加Tooltip)

直接展示图
这是系统中中比较常见的类型

columns1: [
    {
        title: 'Name',
        key: 'name',
        renderHeader: (h, column) => {
            return h('Tooltip', {
                    props: {
                        content: '*******************',
                        placement: 'top',
                        transfer: true
                    }
                },
                [
                    column.column.title,
                    h('Icon', {
                        props: {
                            type: 'md-help-circle'
                        }
                    })
                ]
            )
        },
    },
    {
        title: 'Age',
        key: 'age'
    },
    {
        title: 'Address',
        key: 'address'
    }
],
2.单元格渲染

在这里插入图片描述

columns1: [
   {
       title: 'Name',
       key: 'name',
       renderHeader: (h, column) => {
           return h('Tooltip', {
                   props: {
                       content: '*******************',
                       placement: 'top',
                       transfer: true
                   }
               },
               [
                   column.column.title,
                   h('Icon', {
                       props: {
                           type: 'md-help-circle'
                       }
                   })
               ]
           )
       },
   },
   {
       title: 'Age',
       key: 'age',
       render: (h, params) => {
           return h('Tooltip', {
                   props: {
                       content: params.row.age,
                       placement: 'top',
                       transfer: true
                   }
               },
               [
                   params.row.age,
                   h('Icon', {
                       props: {
                           type: 'md-help-circle'
                       }
                   })
               ]
           )
   }
   },
   {
       title: 'Address',
       key: 'address'
   }
],
  • 可以看看渲染函数
    其中params.row表示当前这一行的数据
    其中界面返回的格式是h(‘这里是组件A名称’,{这里是组件的一些性质,比如on、style,props等等,[这里是组件A的内嵌组件,具体可以参照Age这一列],‘这里是该组件的文本内容’}
3.利用JSX来渲染单元格(以Button为例)

在这里插入图片描述

{
    title: 'Action',
    key: 'action',
    render: (h, params) => {
        let html = '-'
        html = <div>
            <i-button type="primary">编辑</i-button>
            <a class="vertical-none" onClick={() => console.log('点击事件')}> 关闭</a>
        </div>
        return (
            <div>
                {html}
            </div>
        )
    }
}
4.根据不同的条件显示不同的界面

在这里插入图片描述

{
    title: 'Action',
    key: 'action',
    render: (h, params) => {
        let html = '-'
        html = <div>
            {params.row.age>25?<i-button type="primary">编辑</i-button>:<i-button type="warning">编辑</i-button>}
            <a class="vertical-none" onClick={() => console.log('点击事件')}> 关闭</a>
        </div>
        return (
            <div>
                {html}
            </div>
        )
    }
}
5.jsx 点击事件

在这里插入图片描述

{
    title: 'Action',
    key: 'action',
    render: (h, params) => {
        let html = '-'
        html = <div>
            {params.row.age>25?<i-button onClick={() =>console.log('点击事件')} style="margin-right:10px" type="primary">编辑</i-button>:<i-button style="margin-right:10px" type="warning">编辑</i-button>}
            <dropdown
                transfer={true}
                onOn-click={name => {
                    this.selectOperate(name, row)
                }}
            >
                <a class="vertical-none">
                    更多
                    <icon type="ios-arrow-down"></icon>
                </a>
                <dropdown-menu slot="list">
                    <dropdown-item name='deliver'>分配</dropdown-item>
                    <dropdown-item name='poiont'>指派</dropdown-item>
                </dropdown-menu>
            </dropdown>
        </div>
        return (
            <div>
                {html}
            </div>
        )
    }
}
6.h()形式的点击事件

在这里插入图片描述

{
    title: 'Action',
    key: 'action',
    render: (h, params) => {
        let dom1 = h(
            'Tag',
            {
                props: {type: 'border', color: 'primary', closable: true},
                on: {
                    'on-close': event => {
                        console.log('删除tag')
                    }
                },
                nativeOn: {
                    click: () => {
                        console.log("点击事件")
                    }
                }
            },
            params.row.age
        )
        let dom2 = h(
            'Dropdown', {
                on: {
                    "on-click": name => {
                        console.log('点击事件',name)
                    }
                },
                props: {transfer: true}
            }, [
                h('a', {
                    style:{
                        'margin-left':'10px'
                    }
                }, '下载'),
                h('DropdownMenu', {slot: "list"}, [
                    h(
                        "DropdownItem",
                        {props: {name: "dataDic"}},
                        "字典"
                    ),
                    h(
                        "DropdownItem",
                        {props: {name: "result"}},
                        "结果"
                    )
                ])
            ]
        )
        return h('div',[dom1,dom2])
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值