export {
|
mocks,
|
isPage
|
}
|
from '../../../mp-baidu/runtime/wrapper/util'
|
|
export {
|
initRefs
|
}
|
from '../../../mp-weixin/runtime/wrapper/util'
|
|
export const instances = Object.create(null)
|
|
export function initRelation ({
|
vuePid,
|
mpInstance
|
}) {
|
// triggerEvent 后,接收事件时机特别晚,已经到了 ready 之后
|
const nodeId = mpInstance.nodeId + ''
|
const webviewId = mpInstance.pageinstance.__pageId__ + ''
|
|
instances[webviewId + '_' + nodeId] = mpInstance.$vm
|
|
this.triggerEvent('__l', {
|
vuePid,
|
nodeId,
|
webviewId
|
})
|
}
|
|
export function handleLink ({
|
detail: {
|
nodeId,
|
webviewId
|
}
|
}) {
|
const vm = instances[webviewId + '_' + nodeId]
|
if (!vm) {
|
return
|
}
|
let parentVm = instances[webviewId + '_' + vm.$scope.ownerId]
|
if (!parentVm) {
|
parentVm = this.$vm
|
}
|
|
vm.$parent = parentVm
|
vm.$root = parentVm.$root
|
parentVm.$children.push(vm)
|
|
const createdVm = function () {
|
vm.__call_hook('created')
|
}
|
const mountedVm = function () {
|
// 处理当前 vm 子
|
if (vm._$childVues) {
|
vm._$childVues.forEach(([createdVm]) => createdVm())
|
vm._$childVues.forEach(([, mountedVm]) => mountedVm())
|
delete vm._$childVues
|
}
|
vm.__call_hook('beforeMount')
|
vm._isMounted = true
|
vm.__call_hook('mounted')
|
vm.__call_hook('onReady')
|
}
|
// 当 parentVm 已经 mounted 时,直接触发,否则延迟
|
if (!parentVm || parentVm._isMounted) {
|
createdVm()
|
mountedVm()
|
} else {
|
(parentVm._$childVues || (parentVm._$childVues = [])).push([createdVm, mountedVm])
|
}
|
}
|