• vue 函数式指令调用组件


    第一种方式使用render

    import Vue from 'vue'
    import store from '../../../src/store'
    import selectSign from '@/components/selectSignatory/selectSignatory.vue'
    function signatoryShow(data={"",title:'',success,fail}){
        let SelectSignCom = new Vue({
            store:store,//这里需要注入store,否则组件内无法使用mapGetters
            render: (h) => {
                return h(
                    selectSign, {
                        props: {
                             data.width,
                            title:data.title,
                            close:function(){
                                console.log('取消',SelectSignCom);
                                SelectSignCom.$el.remove()
                            },
                            cancel:function(){
                                let result={
                                    cancel:true,
                                    data:''
                                }
                                success&&success(result)
                            },
                            confirm:function(){
                                let result={
                                    confirm:true,
                                    data:''
                                }
                                success&&success(result)
                            },
                        },
                        
                    }
                )
            }
        }).$mount()
        document.body.appendChild(SelectSignCom.$el)
        SelectSignCom.$children[0].show()
        
    }
    
    export default {
        signatoryShow
    }

    第二种方式使用extend

    import Vue from 'vue'
    import store from '../../../src/store'
    import selectSign from '@/components/selectSignatory/selectSignatory.vue'
    function signatoryShow(data={"",title:'',success,fail}){
        //拿到组件的构造函数
        let SelectSign = Vue.extend(selectSign);
        //拿到组件的实力,这里需要注入store,否则组件无法使用mapGetters
        let  SelectSignCom = new SelectSign({
            store:store,
        }).$mount()
        document.body.appendChild(SelectSignCom.$el)
        SelectSignCom.show()
        SelectSignCom._props.close=function(){
            SelectSignCom.$el.remove()
        }
        SelectSignCom._props.confirm=function(){
            let result={
                confirm:true,
                data:''
            }
            success&&success(result)
        }
        SelectSignCom._props.cancel=function(){
            let result={
                cancel:true,
                data:''
            }
            success&&success(result)
        }
        console.log(data);
        SelectSignCom._props.width=data.width
        SelectSignCom._props.title=data.title
        
    }
    
    export default {
        signatoryShow
    }
  • 相关阅读:
    POJ3159 Candies —— 差分约束 spfa
    POJ1511 Invitation Cards —— 最短路spfa
    POJ1860 Currency Exchange —— spfa求正环
    POJ3259 Wormholes —— spfa求负环
    POJ3660 Cow Contest —— Floyd 传递闭包
    POJ3268 Silver Cow Party —— 最短路
    POJ1797 Heavy Transportation —— 最短路变形
    POJ2253 Frogger —— 最短路变形
    POJ1759 Garland —— 二分
    POJ3685 Matrix —— 二分
  • 原文地址:https://www.cnblogs.com/lizhao123/p/15924464.html
Copyright © 2020-2023  润新知