页面路由
接口声明
无需声明
导入模块
import router from '@system.router' 或 const router = require('@system.router')
接口定义
router.push(OBJECT)
跳转到应用内的某个页面
参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
uri | String | 是 | 要跳转到的 uri,可以是下面的格式:- 包含 schema 的完整 uri;目前支持的 schema 有 tel,sms 和 mailto,例如 tel:10086。- 以‘/’开头的应用内页面的路径;例:/about。- 以非‘/’开头的应用内页面的名称;例:About。- 特殊的,如果 uri 的值是"/",则跳转到 path 为"/"的页,没有则跳转到首页支持包含 schema 的完整 uri。对于带有 schema 的 uri,处理流程如下:- 查找 app 下所有 page 的 filter 设置来选择合适的 page 处理请求(参见manifest 文件)- 如果没有合适的 page 能够处理请求,会使用默认策略来处理请求。目前默认策略支持对 http、https、internal 这几种 schema 的处理- 如果默认策略也不能处理请求,会尝试使用系统中的应用来处理请求- 如果没有系统应用可以处理请求,会抛弃请求默认策略的处理逻辑:- 如果 schema 是 http/https,会用内置的 web 页面打开网页- 如果 schema 是 internal(参见文件组织),会根据 uri 的文件扩展名来确定文件类型,再调用系统中的应用打开文件- 如果 schema 是 hap(参见hap链接),会跳转到 hap链接 所支持的类型 |
params | Object | 否 | 跳转时需要传递的数据,跳转到短信发送页面时,可以通过body (1040+ )插入短信内容;跳转到快应用页面时,参数可以在页面中通过this.param1 的方式使用,param1 为 json 中的参数名,param1 对应的值会统一转换为 String 类型 |
params 参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
body1040+ | String | 否 | 跳转时短信发送页面时携带的短信内容。 |
PARAM_LAUNCH_FLAG1050+ | String | 否 | 快应用启动参数,目前仅支持"clearTask",在启动目标页面时会清除除此页面外的其他页面。详见页面启动模式 |
示例:
// launch phone app
router.push({
uri: 'tel:10086'
})
// launch sms
router.push({
uri: 'sms:10086',
params: {
body: "message"
}
})
// open page by path
router.push({
uri: '/about',
params: {
testId: '1'
}
})
// open page by name
router.push({
uri: 'About',
params: {
testId: '1'
}
})
新增下面的用法:
// open web page
router.push({
uri: 'http://www.example.com'
})
// install apk
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'
})
// `1050+` Open page with 'clearTask' flag
router.push({
uri: '/about',
params: {
___PARAM_LAUNCH_FLAG___: 'clearTask'
}
})
router.replace(OBJECT)
跳转到应用内的某个页面,当前页面无法返回
参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
uri | String | 是 | 要跳转到的 uri,可以是下面的格式:- 以"/"开头的应用内页面的路径;例:/about。- 以非"/"开头的应用内页面的名称;例:About。- 特殊的,如果 uri 的值是"/",则跳转到 path 为"/"的页,没有则跳转到首页 |
params | Object | 否 | 跳转时需要传递的数据,参数可以在页面中通过this.param1 的方式使用,param1 为 json 中的参数名,param1 对应的值会统一转换为 String 类型 |
示例:
router.replace({
uri: '/test',
params: {
testId: '1'
}
})
router.back(OBJECT)
返回指定页面
参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
path '1020+' | String | 否 | 返回目标页面的路径,可以是以下几种取值:- 不传该参数,返回上一页面- 以"/"开头的应用内已打开页面的路径;例:/about。- 特殊的,如果 path 的值是"/",则跳转到页面名称为"/"的页,没有则跳转到首页注意点:- path 需要是以"/"开头的当前应用已经打开的页面路径,否则均视为无效参数,返回上一页面- 若根据 path 未匹配到已经打开的页面,返回上一页面- 若根据 path 参数匹配到多个页面,返回至最后打开的页面 |
示例:
// 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()
清空所有历史页面记录,仅保留当前页面
参数:
无
示例:
router.clear()
router.getLength()
获取当前页面栈的页面数量
返回值:
类型 | 说明 |
---|---|
Number | 页面数量 |
示例:
var length = router.getLength()
console.log(`page's length = ${length}`)
router.getState()
获取当前页面状态
返回参数:
参数名 | 类型 | 说明 |
---|---|---|
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}`)
后台运行限制
禁止使用。后台运行详细用法参见后台运行 脚本。