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

fxy060608's avatar
fxy060608 已提交
5 6 7 8
import {
  showWebview
} from './util'

fxy060608's avatar
fxy060608 已提交
9
import {
fxy060608's avatar
fxy060608 已提交
10 11
  setStatusBarStyle,
  invoke
fxy060608's avatar
fxy060608 已提交
12 13
} from '../../bridge'

fxy060608's avatar
init v3  
fxy060608 已提交
14 15 16 17 18 19 20 21 22 23 24
import {
  registerPage
} from '../../framework/page'

import {
  navigate
} from '../../framework/navigator'

function _navigateTo ({
  path,
  query,
fxy060608's avatar
fxy060608 已提交
25 26
  animationType,
  animationDuration
fxy060608's avatar
fxy060608 已提交
27
}, callbackId) {
fxy060608's avatar
fxy060608 已提交
28 29 30
  UniServiceJSBridge.emit('onAppRoute', {
    type: 'navigateTo',
    path
fxy060608's avatar
fxy060608 已提交
31
  })
fxy060608's avatar
fxy060608 已提交
32

fxy060608's avatar
fxy060608 已提交
33
  showWebview(
fxy060608's avatar
init v3  
fxy060608 已提交
34
    registerPage({
fxy060608's avatar
fxy060608 已提交
35
      path,
fxy060608's avatar
fxy060608 已提交
36 37
      query,
      openType: 'navigate'
fxy060608's avatar
fxy060608 已提交
38 39
    }),
    animationType,
fxy060608's avatar
fxy060608 已提交
40 41 42 43 44 45
    animationDuration,
    () => {
      invoke(callbackId, {
        errMsg: 'navigateTo:ok'
      })
    }
fxy060608's avatar
fxy060608 已提交
46
  )
fxy060608's avatar
fxy060608 已提交
47
  setStatusBarStyle()
fxy060608's avatar
init v3  
fxy060608 已提交
48 49 50 51
}

export function navigateTo ({
  url,
fxy060608's avatar
fxy060608 已提交
52
  openType,
fxy060608's avatar
init v3  
fxy060608 已提交
53 54 55 56 57 58 59 60 61 62 63 64
  animationType,
  animationDuration
}) {
  const urls = url.split('?')
  const path = urls[0]
  const query = parseQuery(urls[1] || '')
  navigate(path, function () {
    _navigateTo({
      path,
      query,
      animationType,
      animationDuration
65
    }, callbackId)
fxy060608's avatar
fxy060608 已提交
66
  }, openType === 'appLaunch')
67
}