iview render函数实现switch

1.1例如:渲染多个组件

{
                title: '操作',
                width: 150,
                render: (h, { row, index }) => {
                    let btn = h('i-switch', {
                    props: {
                        value: row.join_status === 1 ? true : false,
                        size: 'large',
                        loading: row.loading
                    },
                    on: {
                        'on-change': (val) => {
                        this.tabData[index].loading = true
                        if (!val) {
                            this.$Modal.confirm({
                            title: '你确定要禁用该加盟商吗?',
                            content: '<p>禁用将会导致该加盟商下所有人员无法登陆CRM系统</p>',
                            onOk: () => {
                                this.changeChannelStatus(row.id)
                            },
                            onCancel: () => {
                                this.tabData[index].loading = false
                            }
                            });
                            return
                        }
                        this.changeChannelStatus(row.id)
                        }
                    }
                    }, [
                        h('span', {
                        slot: 'open',
                        domProps: {
                            innerHTML: 'ON'
                        }
                        }),
                        h('span', {
                        slot: 'close',
                        domProps: {
                            innerHTML: 'OFF'
                        }
                        })
                    ]
                    )
                    let edit = h('a', {
                    style: {
                        'margin-right': '15px',
                    },
                    on: {
                        click: () => {
                        this.$router.push({ name: 'addJoiner', query: { ...row, tit: '编辑加盟商' } })
                        }
                    }
                    }, '编辑')
                return h('div', [edit, btn])
            }

![图例]
image.png

switch 异步时loading状态


image.png

1.2 自定义组件
  {
          title: '状态',
          render: (h, { row }) => {
            return h(myTag, {
              props: {
                color: row.join_status === 1 ? '#52C41A' : 'red'
              },
              class: {
                'hahah': true
              },
              nativeOn: { //事件
                click: () => {
                  alert(1)
                }
              }
            }, row.join_status === 1 ? '正常' : '解约')
          }
        },

image.png

由此看出配置的参数vlaue支持变量

  • 2、 怎么绑定v-model? 这个问题vue官方说了:是没法绑定的,只能自己实现
    例如:
 {
          title: '价格',
          key: 'name',
          render: (h, { row, index }) => {
            let input = h('input', {
              domProps: {
                value: row.price,
                type: 'number',
                min: 1
              },
              style: {
                width: '200px',
                display: 'inline-block',
                height: '32px',
                'line-height': 1.5,
              },
              on: {
                change: (event) => { // 实现绑定数据
                  let val = event.target.value
                  this.tabData[index].price = val
                }
              }
            })
            let arr = [input]
            let tip = h('span', {
              style: {
                color: 'red',
                marginLeft: '10px'
              }
            }, '必填,最多保留两位小数')
            if (row.tip) {
              arr.push(tip)
            }
            return h('div', arr)
          }
 }         


喜欢的朋友记得点赞、收藏、关注哦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武昌库里写JAVA

您的鼓励将是我前进的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值