element ui table封装组件,render 函数动态事件设置

45 篇文章 1 订阅
17 篇文章 0 订阅

接着上一篇讲的,封装element ui table, 支持自定义列的展示和按照指定顺序展示

自定义列需要在引用页面重新写一下,这样就可以定义化了,多数用于一些转换,或者操作列场景下,自行考虑即可,我们粉转成一个组件,那么不用每个table页面按照官方的这种el-table-column写法:

<el-table-column label="状态" >
  <template slot-scope="{row}">
    <span class="link-type">{{ row.status }}</span>
  </template>
</el-table-column> 

而是使用

columns: [
  {
    prop: 'id',
    label: '序号',
    align: 'center',
    width: '60px'
  },
  {
    prop: 'user_id',
    label: '用户id',
    align: 'center',
    width: '120px'
  },

。。。。。。。。。省略

那么如果我在某些情况下对columns的某列需要用多个事件处理,那么改怎么办呢?

下面先看看效果:

每个按钮都有自己的事件,并且按钮是动态的,下面看看代码:

columns: [  
       。。。。。。。省略   
        {
          prop: 'atrome',
          label: '操作',
          align: 'center',
          width: '250px',
          render: (h, params) => {
            const butts = this.showButton(params.row.shop_type)
            const button = []
            butts.forEach((item, index) => {
              let opt = ''
              opt = h('Button', {
                props: {
                  type: 'primary',
                  size: 'small'
                },
                style: {
                  marginLeft: '5px'
                },
                on: {
                  click: () => {
                    this.openType(item.key)
                  }
                }
              }, item.val)
              button.push(opt)
            })
            return h('div', button)
          }
        }
 。。。。。。。省略   
]

//methods里面的showButton,openType方法
showButton: function(type) {
      if (type === 26 || type === 27) {
        const buts = [
          {
            'key': 'hw',
            'val': '自有仓'
          }
        ]
        return buts
      } else if (type === 28 || type === 29 || type === 30) {
        const buts = [
          {
            'key': 'ls',
            'val': 'PDD'
          },
          {
            'key': 'cp',
            'val': 'JD'
          },
          {
            'key': 'lj',
            'val': 'TIANMAO'
          }
        ]
        return buts
      }
 }

 openType: function(type) {
      alert(type)
 },

这样就实现了render 里面props来自定义 style,动态绑定多个事件,值得注意的是自定义style一定要驼峰命名,否则是不会生效的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值