You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.7 KiB
72 lines
1.7 KiB
/* 快手也使用__wxExparserNodeId__和__wxWebviewId__ */
|
|
export const mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__']
|
|
|
|
export function findVmByVueId (vm, vuePid) {
|
|
const $children = vm.$children
|
|
// 优先查找直属
|
|
let parentVm = $children.find(childVm => childVm.$scope._$vueId === vuePid)
|
|
if (parentVm) {
|
|
return parentVm
|
|
}
|
|
// 反向递归查找
|
|
for (let i = $children.length - 1; i >= 0; i--) {
|
|
parentVm = findVmByVueId($children[i], vuePid)
|
|
if (parentVm) {
|
|
return parentVm
|
|
}
|
|
}
|
|
}
|
|
|
|
export function initBehavior (options) {
|
|
return Behavior(options)
|
|
}
|
|
|
|
export function isPage () {
|
|
return !!this.route
|
|
}
|
|
|
|
export function initRelation (detail) {
|
|
this.triggerEvent('__l', detail)
|
|
}
|
|
|
|
export function initRefs (vm) {
|
|
const mpInstance = vm.$scope
|
|
Object.defineProperty(vm, '$refs', {
|
|
get () {
|
|
const $refs = {}
|
|
const components = mpInstance.selectAllComponents('.vue-ref')
|
|
components.forEach(component => {
|
|
const ref = component.dataset.ref
|
|
$refs[ref] = component.$vm || component
|
|
})
|
|
const forComponents = mpInstance.selectAllComponents('.vue-ref-in-for')
|
|
forComponents.forEach(component => {
|
|
const ref = component.dataset.ref
|
|
if (!$refs[ref]) {
|
|
$refs[ref] = []
|
|
}
|
|
$refs[ref].push(component.$vm || component)
|
|
})
|
|
return $refs
|
|
}
|
|
})
|
|
}
|
|
|
|
export function handleLink (event) {
|
|
const {
|
|
vuePid,
|
|
vueOptions
|
|
} = event.detail || event.value // detail 是微信,value 是百度(dipatch)
|
|
|
|
let parentVm
|
|
|
|
if (vuePid) {
|
|
parentVm = findVmByVueId(this.$vm, vuePid)
|
|
}
|
|
|
|
if (!parentVm) {
|
|
parentVm = this.$vm
|
|
}
|
|
|
|
vueOptions.parent = parentVm
|
|
}
|
|
|