ui-template-muc
Version:
A fantastic mobile ui lib implement by Vue
34 lines (33 loc) • 966 B
JavaScript
import {isArray} from '@utils/helpers'
export default function instantiateComponent (Vue, Component, data, renderFn) {
let renderData
let childrenRenderFn
const instance = new Vue({
render (createElement) {
let children = childrenRenderFn && childrenRenderFn(createElement)
if (children && !isArray(children)) {
children = [children]
}
return createElement(Component, renderData, children || [])
},
methods: {
init () {
document.body.appendChild(this.$el)
},
destroy () {
//component $destroy also invoke
this.$destroy()
document.body.removeChild(this.$el)
}
}
})
instance.updateRenderData = function (data, render) {
renderData = data
childrenRenderFn = render
}
instance.updateRenderData(data, renderFn)
instance.$mount()
instance.init()
const component = instance.$children[0]
return component
}