vue render封装图片弹窗插件

引用子组件
<previewImg :previewImage="columnData.imageUrl"></previewImg>

如果图片为空,使用默认图片时,需要用require先把图片引入
const defaultmg = require(’@/assets/defPic.png’)

定义子组件

<script>
export default {
    data () {
        return {
            previewVisible: false,
        }
    },
    render (createElement) {
        return createElement(
            'div',
            {},
            [
                createElement(
                    'a-avatar',
                    {
                        attrs: {
                            size: 36,
                            src: this.previewImage
                        },
                        style: {
                            cursor: 'pointer'
                        },
                        on: {
                            click: this.handleShow
                        }
                    }
                ),
                
                createElement(
                    'a-modal',
                    {
                        attrs: {
                            visible: this.previewVisible,
                            footer: null,
                            width: this.width + 'px'
                        },
                        on: {
                            cancel: this.handleCancel
                        }
                    },
                    [
                        createElement(
                            'img',
                            {
                                attrs: {
                                    alt: 'show big image',
                                    src: this.previewImage
                                },
                                style: {
                                    width: '100%'
                                }
                            }
                        )
                    ]
                )
            ]
        )
    },
    props: {
        width: {
            type: Number,
            default: 800
        },
        previewImage: {
            type: String,
            default: 'none.png'
        },
        showBig: {
            type: Boolean,
            default: true
        }
    },
    methods: {
        handleCancel () {
            this.previewVisible = false
        },
        handleShow () {
            if (!this.showBig) {
                return
            }
            this.previewVisible = true
        }
    }
}
</script>

<style lang="scss" scoped>
/deep/.ant-modal-body {
    padding: 38px 23px 23px;
}
</style>

vue文档参考
https://cn.vuejs.org/v2/guide/render-function.html#%E6%B7%B1%E5%85%A5%E6%95%B0%E6%8D%AE%E5%AF%B9%E8%B1%A1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值