page.js 1.3 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3
import {
  initWebview,
  createWebview
fxy060608's avatar
fxy060608 已提交
4 5 6 7 8
} from './webview/index'

import {
  createHolder
} from './holder'
fxy060608's avatar
fxy060608 已提交
9

fxy060608's avatar
fxy060608 已提交
10
const pages = []
fxy060608's avatar
fxy060608 已提交
11 12

export function getCurrentPages () {
fxy060608's avatar
fxy060608 已提交
13
  return pages
fxy060608's avatar
fxy060608 已提交
14 15 16 17 18 19 20 21 22
}
/**
 * @param {Object} pageVm
 *
 * page.beforeCreate 时添加 page
 * page.beforeDestroy 时移出 page
 *
 * page.viewappear  onShow
 * page.viewdisappear onHide
23
 *
fxy060608's avatar
fxy060608 已提交
24 25 26 27 28 29 30 31 32
 * navigateTo
 * redirectTo
 *
 *
 *
 *
 *
 *
 */
fxy060608's avatar
fxy060608 已提交
33 34 35
/**
 * 首页需要主动registerPage,二级页面路由跳转时registerPage
 */
fxy060608's avatar
fxy060608 已提交
36 37 38 39
export function registerPage ({
  path,
  webview
}, instanceContext) {
fxy060608's avatar
fxy060608 已提交
40
  const routeOptions = JSON.parse(JSON.stringify(instanceContext.__uniRoutes.find(route => route.path === path)))
fxy060608's avatar
fxy060608 已提交
41 42

  if (!webview) {
fxy060608's avatar
fxy060608 已提交
43
    webview = createWebview(path, instanceContext, routeOptions)
fxy060608's avatar
fxy060608 已提交
44 45
  }

fxy060608's avatar
fxy060608 已提交
46 47 48
  if (process.env.NODE_ENV !== 'production') {
    console.log(`[uni-app] registerPage`, path, webview.id)
  }
fxy060608's avatar
fxy060608 已提交
49

fxy060608's avatar
fxy060608 已提交
50
  initWebview(webview, instanceContext, webview.id === '1' && routeOptions)
fxy060608's avatar
fxy060608 已提交
51

fxy060608's avatar
fxy060608 已提交
52
  const route = path.slice(1)
fxy060608's avatar
fxy060608 已提交
53
  pages.push({
fxy060608's avatar
fxy060608 已提交
54
    route,
fxy060608's avatar
fxy060608 已提交
55 56 57
    $getAppWebview () {
      return webview
    },
fxy060608's avatar
fxy060608 已提交
58 59 60 61 62 63 64 65 66 67
    $page: {
      id: parseInt(webview.id),
      meta: routeOptions.meta,
      path,
      route
    },
    $holder: createHolder(webview, {
      navigationBar: webview.$navigationBar
    }, instanceContext)
  })
fxy060608's avatar
fxy060608 已提交
68 69

  return webview
fxy060608's avatar
fxy060608 已提交
70
}