zoukankan      html  css  js  c++  java
  • 【Vue】View UI(原iView)的Table组件的render函数

    View UI中,表格组件Table是一个常用组件,表格组件重要的元素是列columns,如果仅仅是单调的纯文本功能展示,那么在使用组件时,在columns中定义好映射就算完成了。但是我们大部分需求并没有那么简单。我们可能会遇到如下需求:

    • 某一列渲染一个可点击的链接
    • 某一列渲染一个可以放大的图片
    • 某一列渲染一个可操作的按钮
    • 某一列渲染一个好看的头像
    • 某一列渲染标签

    以上种种操作就需要配合单元格(也称作为columns数据的项)的渲染函数render,自定义渲染当前列,包括

    • 渲染自定义组件
    • 原生的html标签
    • View UI组件

    render 函数传入两个参数:

    • 第一个是 h
    • 第二个是对象,包含 rowcolumnindex,分别指当前单元格数据,当前列数据,当前是第几行。

    下面就以上面几个需求为例介绍render的用法:

    {
        title: '',
        key: '',
        render: (h: any, params: any) => {
            return h('元素', {元素性质}/[元素性质],"元素内容"/[元素内容]),
        }
    }
    

    1.渲染可点击的链接

    {
        title: '直播地址',
         100,
        key: 'liveUrl',
        render: (h: any, params: any) => {
            return h(
                'a',
                {
                    attrs: {
                        href: params.row.liveUrl,
                        target: '_blank',
                    },
                },
                '直播地址'
            )
        }
    

    2.渲染可操作的按钮

    这里按钮是用的View UI的按钮Button组件,所以这里的使用范畴就是渲染组件

    {
        title: '操作',
        key: 'Actions',
         150,
        render: (h: any, params: any) => {
            return h('div', [
                h(
                    'Button',
                    {
                        props: {
                            type: 'primary',
                            size: 'small',
                        },
                        style: {
                            marginRight: '5px',
                        },
                        on: {
                            click: () => {
                                //按钮点击事件
                            },
                        },
                    },
                    '编辑'
                ),
                h(
                    'Button',
                    {
                        props: {
                            type: 'error',
                            size: 'small',
                        },
                        on: {
                            click: async () => {
                                //弹出模态框
                                this.$Modal.confirm({
                                    title: '提示',
                                    content: '删除确认',
                                    okText: '确认',
                                    cancelText: '取消',
                                    onOk: async () => {
                                        //点击确认后 作的操作
                                    },
                                })
                            },
                        },
                    },
                    '删除'
                ),
            ])
        },
    }
    

    3.渲染可放大的图片

    这里需要View UI的模态框Modal组件的配合。

      qrCodeShow: boolean = false
      qrCodeUrl: string = ''
    //...
    {
          title: this.L('直播二维码'),
           120,
          align: 'center',
          key: 'qrCode',
          render: (h, params) => {
            return h('div', [
              h('img', {
                style: {
                   '45px',
                  height: '45px',
                  verticalAlign: 'middle',
                  marginTop: '3px',
                  marginBottom: '3px',
                },
                attrs: {
                  src: params.row.qrCode,
                },
                on: {
                  click: (e) => {
                    //点击预览图片
                    this.handleView(e.srcElement.currentSrc)
                  },
                },
              }),
            ])
          },
        },
    //...
      handleView(url) {
        this.qrCodeUrl = url
        this.qrCodeShow = true
      }
    
        <Modal v-model="qrCodeShow"
               title="展品二维码">
          <img :src="qrCodeUrl"
               v-if="qrCodeShow"
               style="100%;height:100%">
          <!--取消对话框默认按钮-->
          <div slot="footer"></div>
        </Modal>
    

    4.渲染头像

    网站后台管理界面,经常会用用户管理的功能,所以对用户的头像渲染也成了刚需。

    render: (h: any, params: any) => {
        return h('div', [
            //头像
            h('Avatar', {
                props: {
                    shape: 'square',
                    src:
                    params.row.head == null
                    ? require('../../images/usericon.jpg')
                    : params.row.head,
                },
            }),
            //用户名
            h(
                'span',
                {
                    style: {
                        'margin-left': '8px',
                        'margin-right': '10px',
                    },
                },
                params.row.username
            )
        ])
    },
    

    5.渲染标签

    单调的状态,提示,通过标签让界面看起来更生动,ps:这里依然用到了View UI的标签Tag组件。

    {
        title: '状态',
         120,
        key: 'status',
        render: (h: any, params: any) => {
            return h(
                'Tag',
                {
                    props: {
                        color:
                        params.row.status == 1
                        ? 'success'
                        : params.row.status == 2
                        ? 'default'
                        : 'error',
                    },
                },
                //获取状态名称
                this.getCodeText('EnumAuditStatus', params.row.status)
            )
        },
    },
    
  • 相关阅读:
    数据不平衡
    2D到3D 外参矩阵估计
    ppt 绘图转成 Latex 常用的 eps 格式
    3D 旋转中 旋转矩阵 欧拉角 四元数的相互转换
    opencv使用 --- fastGlobalSmootherFilter
    Pytorch
    MTCNN 复现
    3DFace基础---光照估计
    Pytorch --- cuda 相关
    Pytorch---多维数组运算过程的索引处理
  • 原文地址:https://www.cnblogs.com/RandyField/p/13956822.html
Copyright © 2011-2022 走看看