create-page.js 1.1 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2
import {
  hasOwn
3
} from 'uni-shared'
fxy060608's avatar
fxy060608 已提交
4

fxy060608's avatar
fxy060608 已提交
5 6
import EventChannel from 'uni-helpers/EventChannel'

7
export default function createPage (pageVm, options) {
fxy060608's avatar
fxy060608 已提交
8 9
  const $route = pageVm.$route
  pageVm.route = $route.meta.pagePath
10 11 12
  if (!pageVm.options) { // 可能开发者会声明 options 属性
    pageVm.options = options
  }
fxy060608's avatar
fxy060608 已提交
13 14

  const id = hasOwn($route.params, '__id__') ? $route.params.__id__ : $route.meta.id
fxy060608's avatar
fxy060608 已提交
15 16 17 18
  let fullPath = $route.fullPath
  if ($route.meta.isEntry) {
    fullPath = '/' + $route.meta.pagePath + fullPath.replace('/', '')
  }
fxy060608's avatar
fxy060608 已提交
19
  pageVm.__page__ = {
fxy060608's avatar
fxy060608 已提交
20
    id,
fxy060608's avatar
fxy060608 已提交
21 22
    path: $route.path,
    route: $route.meta.pagePath,
fxy060608's avatar
fxy060608 已提交
23
    fullPath,
24
    options: options,
fxy060608's avatar
fxy060608 已提交
25 26
    meta: Object.assign({}, $route.meta)
  }
fxy060608's avatar
fxy060608 已提交
27 28 29 30
  const eventChannel = pageVm.$router.$eventChannel || new EventChannel()
  pageVm.getOpenerEventChannel = function () {
    return eventChannel
  }
31 32
  // 兼容 mpvue
  pageVm.$vm = pageVm
fxy060608's avatar
fxy060608 已提交
33
  pageVm.$root = pageVm
fxy060608's avatar
fxy060608 已提交
34
  pageVm.$holder = pageVm.$parent.$parent
35 36 37 38 39 40 41 42
  // 补充 mp 相关属性
  pageVm.$mp = {
    mpType: 'page',
    page: pageVm,
    query: {},
    // 暂不支持
    status: ''
  }
fxy060608's avatar
fxy060608 已提交
43
}