page-base-parser.js 1007 字节
Newer Older
1 2
import {
  stringifyQuery
fxy060608's avatar
fxy060608 已提交
3
} from 'uni-shared/query'
4

fxy060608's avatar
fxy060608 已提交
5 6
import {
  initHooks,
DCloud-WZF's avatar
DCloud-WZF 已提交
7
  initUnknownHooks,
fxy060608's avatar
fxy060608 已提交
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
  PAGE_EVENT_HOOKS
} from 'uni-wrapper/util'

import parseComponent from 'uni-platform/runtime/wrapper/component-parser'

const hooks = [
  'onShow',
  'onHide',
  'onUnload'
]

hooks.push(...PAGE_EVENT_HOOKS)

export default function parseBasePage (vuePageOptions, {
  isPage,
  initRelation
}) {
  const pageOptions = parseComponent(vuePageOptions, {
    isPage,
    initRelation
  })

fxy060608's avatar
fxy060608 已提交
30
  initHooks(pageOptions.methods, hooks, vuePageOptions)
DCloud-WZF's avatar
DCloud-WZF 已提交
31
  initUnknownHooks(pageOptions.methods, vuePageOptions)
fxy060608's avatar
fxy060608 已提交
32

33 34
  pageOptions.methods.onLoad = function (query) {
    this.options = query
fxy060608's avatar
fxy060608 已提交
35 36
    const copyQuery = Object.assign({}, query)
    delete copyQuery.__id__
37
    this.$page = {
fxy060608's avatar
fxy060608 已提交
38
      fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)
39 40 41
    }
    this.$vm.$mp.query = query // 兼容 mpvue
    this.$vm.__call_hook('onLoad', query)
fxy060608's avatar
fxy060608 已提交
42 43 44
  }

  return pageOptions
DCloud-WZF's avatar
DCloud-WZF 已提交
45
}