无需声明
import router from '@system.router' 或 const router = require('@system.router')
跳转到应用内的某个页面,页面栈层数没有限制
注意:不能跳到 tabBar 页面
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| uri | String | 是 | 要跳转到的 uri,可以是下面的格式:
|
| params | Object | 否 | 跳转时需要传递的数据,跳转到短信发送页面时,可以通过body(1040+)插入短信内容;跳转到快应用页面时,参数可以在目标页面中通过this.param1的方式使用,param1 为 json 中的参数名,param1 对应的值会统一转换为 String 类型。使用this.param1变量时,需要在目标页面中在 public(应用外传参)或 protected (应用内传参)下定义 key 名相同的属性。除开发者自定义的参数外,快应用官方提供了部分供选参数,参数释义如下 |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
body1040+ | String | 否 | 跳转时短信发送页面时携带的短信内容。 |
___PARAM_LAUNCH_FLAG___1050+ | String | 否 | 快应用启动参数,目前仅支持"clearTask",在启动目标页面时会清除除此页面外的其他页面。详见页面启动模式 |
___PARAM_PAGE_ANIMATION___1070+ | Object | 否 | 页面跳转时动画类型 |
| 页面动作 | 动画类型 | 必填 | 说明 |
|---|---|---|---|
| openEnter | String | 否 | 打开进入当前页时当前页动画,可选值 slide, none,默认为 slide |
| closeEnter | String | 否 | 关闭返回当前页时当前页动画,可选值 slide, none,默认为 slide |
| openExit | String | 否 | 打开下一页,退出当前页时当前页动画,可选值 slide, none,默认为 slide |
| closeExit | String | 否 | 返回上一页,退出当前页时当前页动画,可选值 slide, none,默认为 slide |
slide 模式在各动作下的动画变化详情如下:
| 页面动作 | 动画变化 | 动画时长 |
|---|---|---|
| openEnter | x from 100%~0 | 300ms |
| closeEnter | x from -25%~0, alpha 0.6~1.0 | 300ms |
| openExit | x from 0~-25%, alpha 1.0~0.6 | 300ms |
| closeExit | x from 0~100% | 300ms |
router.push({
uri: 'tel:10086'
})
发送短信
router.push({
uri: 'sms:10086',
params: {
body: 'message'
}
})
应用内切换页面
router.push({
uri: '/about',
params: {
testId: '1'
}
})
// open page by name
router.push({
uri: 'About',
params: {
testId: '1'
}
})
1050 +router.push({
uri: '/about',
params: {
___PARAM_LAUNCH_FLAG___: 'clearTask'
}
})
打开网页
router.push({
uri: 'http://www.example.com'
})
打开原生应用
router.push({
uri: 'internal://cache/example.apk'
})
打开另一个快应用
router.push({
uri: 'hap://app/com.example.quickapp/page?key=value'
})
打开 wifi 设置页面 1040 +
router.push({
uri: 'hap://settings/wlan_manager'
})
配置跳转动画模式 1070 +
router.push({
uri: '/about',
params: {
___PARAM_PAGE_ANIMATION___: {
openEnter: `none`,
closeEnter: `slide`,
openExit: `slide`,
closeExit: `slide`
}
}
})
跳转到应用内的某个页面,当前页面无法返回
注意:不能跳到 tabBar 页面
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| uri | String | 是 | 要跳转到的 uri,可以是下面的格式:
|
| params | Object | 否 | 跳转时需要传递的数据,参数可以在目标页面中通过this.param1的方式使用,param1 为 json 中的参数名,param1 对应的值会统一转换为 String 类型。使用this.param1变量时,需要在目标页面中在 public(应用外传参)或 protected (应用内传参)下定义 key 名相同的属性 |
router.replace({
uri: '/test',
params: {
testId: '1'
}
})
1200+跳转到 tabBar 页面,并关闭其他所有页面
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| uri | String | 是 | 要跳转到的 uri,是以"/"开头的应用内页面的路径;例:/about。注意页面路径必须是配置文件中已经定义存在的 tabBar 页面路径 |
| params | Object | 否 | 跳转时需要传递的数据,参数可以在目标页面中通过this.param1的方式使用,param1 为 json 中的参数名,param1 对应的值会统一转换为 String 类型。使用this.param1变量时,需要在目标页面中在 public(应用外传参)或 protected (应用内传参)下定义 key 名相同的属性 |
router.switchTab({
uri: '/test',
params: {
testId: '1'
}
})
返回指定页面
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
path 1020+ | String | 否 | 返回目标页面的路径,可以是以下几种取值:
|
// A页面, open page by name
router.push({
uri: 'B'
})
// B页面, open page by name
router.push({
uri: 'C'
})
// C页面, open page by name
router.push({
uri: 'D'
})
// D页面, open page by name
router.push({
uri: 'E'
})
// E页面不传入页面路径,返回至D页面
router.back()
// D页面不传入页面名称,返回至C页面
router.back()
// C页面传入页面路径,返回至A页面
router.back({
path: '/A'
})
清空所有历史页面记录,仅保留当前页面
无
router.clear()
获取当前页面栈的页面数量
| 类型 | 说明 |
|---|---|
| Number | 页面数量 |
var length = router.getLength()
console.log(`page's length = ${length}`)
获取当前页面状态
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | Number | 当前页面在页面栈中的位置 |
| name | String | 当前页面的名称 |
| path | String | 当前页面的路径 |
var page = router.getState()
console.log(`page index = ${page.index}`)
console.log(`page name = ${page.name}`)
console.log(`page path = ${page.path}`)
1070+获取当前页面栈列表
| 类型 | 说明 |
|---|---|
| Array | 页面栈列表。数组每一项都为 Object 类型。 |
数组每一项构成:
| 字段 | 类型 | 说明 |
|---|---|---|
| name | String | 页面的名称 |
| path | String | 页面的路径 |
var stacks = router.getPages()
console.log('栈底页面名称为:', stacks[0].name) // 如 list、detail 等
console.log('栈底页面路径为:', stacks[0].path) // 如 /list、/detail、/home/preview
禁止使用。 后台运行详细用法参见后台运行 脚本。