Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_42656449
unidocs-zh
提交
b39f45e9
unidocs-zh
项目概览
weixin_42656449
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b39f45e9
编写于
6月 25, 2023
作者:
weixin_42656449
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新url的描述, 说明是相对路径
上级
891b31ff
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
371 addition
and
371 deletion
+371
-371
docs/api/router.md
docs/api/router.md
+371
-371
未找到文件。
docs/api/router.md
浏览文件 @
b39f45e9
### uni.navigateTo(OBJECT)
保留当前页面,跳转到应用内的某个页面,使用
```uni.navigateBack```
可以返回到原页面。
**OBJECT参数说明**
|参数|类型|必填|默认值|说明|平台差异说明|
|:-|:-|:-|:-|:-|:-|
|url|String|是||需要跳转的应用内非 tabBar 的页面的路径
, 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2',path为下一个页面的路径,下一个页面的onLoad函数可得到传递的参数| |
|animationType|String|否|pop-in|窗口显示的动画效果,详见:
[
窗口动画
](
api/router?id=animation
)
|App|
|animationDuration|Number|否|300|窗口动画持续时间,单位为 ms|App|
|events|Object|否||页面间通信接口,用于监听被打开页面发送到当前页面的数据。2.8.9+ 开始支持。||
|success|Function|否||接口调用成功的回调函数||
|fail|Function|否||接口调用失败的回调函数||
|complete|Function|否||接口调用结束的回调函数(调用成功、失败都会执行)|
|
**object.success 回调函数**
**参数**
**Object res**
|属性|类型|说明|
|:-|:-|:-|
|eventChannel|
[
EventChannel
](
api/router?id=event-channel
)
|和被打开页面进行通信|
**示例**
```
javascript
//在起始页面跳转到test.vue页面并传递参数
uni
.
navigateTo
({
url
:
'
test?id=1&name=uniapp
'
});
```
```
javascript
// 在test.vue页面接受参数
export
default
{
onLoad
:
function
(
option
)
{
//option为object类型,会序列化上个页面传递的参数
console
.
log
(
option
.
id
);
//打印出上个页面传递的参数。
console
.
log
(
option
.
name
);
//打印出上个页面传递的参数。
}
}
```
```
js
// 在起始页面跳转到test.vue页面,并监听test.vue发送过来的事件数据
uni
.
navigateTo
({
url
:
'
pages/test?id=1
'
,
events
:
{
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
acceptDataFromOpenedPage
:
function
(
data
)
{
console
.
log
(
data
)
},
someEvent
:
function
(
data
)
{
console
.
log
(
data
)
}
...
},
success
:
function
(
res
)
{
// 通过eventChannel向被打开页面传送数据
res
.
eventChannel
.
emit
(
'
acceptDataFromOpenerPage
'
,
{
data
:
'
data from starter page
'
})
}
})
// 在test.vue页面,向起始页通过事件传递数据
onLoad
:
function
(
option
)
{
const
eventChannel
=
this
.
getOpenerEventChannel
();
eventChannel
.
emit
(
'
acceptDataFromOpenedPage
'
,
{
data
:
'
data from test page
'
});
eventChannel
.
emit
(
'
someEvent
'
,
{
data
:
'
data from test page for someEvent
'
});
// 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
eventChannel
.
on
(
'
acceptDataFromOpenerPage
'
,
function
(
data
)
{
console
.
log
(
data
)
})
}
```
url有长度限制,太长的字符串会传递失败,可改用
[
窗体通信
](
https://uniapp.dcloud.io/collocation/frame/communication
)
、
[
全局变量
](
https://ask.dcloud.net.cn/article/35021
)
,另外参数中出现空格等特殊字符时需要对参数进行编码,如下为使用
`encodeURIComponent`
对参数进行编码的示例。
```
html
<navigator
:url=
"'/pages/test/test?item='+ encodeURIComponent(JSON.stringify(item))"
></navigator>
```
```
javascript
// 在test.vue页面接受参数
onLoad
:
function
(
option
)
{
const
item
=
JSON
.
parse
(
decodeURIComponent
(
option
.
item
));
}
```
**注意:**
*
页面跳转路径有层级限制,不能无限制跳转新页面
*
跳转到 tabBar 页面只能使用 switchTab 跳转
*
路由API的目标页面必须是在pages.json里注册的vue页面。如果想打开web url,在App平台可以使用
[
plus.runtime.openURL
](
http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.openURL
)
或web-view组件;H5平台使用 window.open;小程序平台使用web-view组件(url需在小程序的联网白名单中)。在hello uni-app中有个组件ulink.vue已对多端进行封装,可参考。
### uni.redirectTo(OBJECT)
关闭当前页面,跳转到应用内的某个页面。
**OBJECT参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|url|String|是|需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
```
javascript
uni
.
redirectTo
({
url
:
'
test?id=1
'
});
```
**注意:**
*
跳转到 tabBar 页面只能使用 switchTab 跳转
### uni.reLaunch(OBJECT)
关闭所有页面,打开到应用内的某个页面。
**注意:**
如果调用了
[
uni.preloadPage(OBJECT)
](
https://uniapp.dcloud.net.cn/api/preload-page
)
不会关闭,仅触发生命周期
`onHide`
**OBJECT参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|url|String|是|需要跳转的应用内页面路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2',如果跳转的页面路径是 tabBar 页面则不能带参数|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
```
javascript
uni
.
reLaunch
({
url
:
'
test?id=1
'
});
```
```
javascript
export
default
{
onLoad
:
function
(
option
)
{
console
.
log
(
option
.
id
);
}
}
```
Tips:
*
H5端调用
`uni.reLaunch`
之后之前页面栈会销毁,但是无法清空浏览器之前的历史记录,此时
`navigateBack`
不能返回,如果存在历史记录的话点击浏览器的返回按钮或者调用
`history.back()`
仍然可以导航到浏览器的其他历史记录。
### uni.switchTab(OBJECT)
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。
**注意:**
如果调用了
[
uni.preloadPage(OBJECT)
](
https://uniapp.dcloud.net.cn/api/preload-page
)
不会关闭,仅触发生命周期
`onHide`
**OBJECT参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|url|String|是|需要跳转的 tabBar 页面的路径(需在 pages.json 的 tabBar 字段定义的页面),路径后不能带参数|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
pages.json
```
javascript
{
"
tabBar
"
:
{
"
list
"
:
[{
"
pagePath
"
:
"
pages/index/index
"
,
"
text
"
:
"
首页
"
},{
"
pagePath
"
:
"
pages/other/other
"
,
"
text
"
:
"
其他
"
}]
}
}
```
other.vue
```
javascript
uni
.
switchTab
({
url
:
'
/pages/index/index
'
});
```
### uni.navigateBack(OBJECT)
关闭当前页面,返回上一页面或多级页面。可通过
```getCurrentPages()```
获取当前的页面栈,决定需要返回几层。
**OBJECT参数说明**
|参数|类型|必填|默认值|说明|平台差异说明|
|:-|:-|:-|:-|:-|:-|
|delta|Number|否|1|返回的页面数,如果 delta 大于现有页面数,则返回到首页。||
|animationType|String|否|pop-out|窗口关闭的动画效果,详见:
[
窗口动画
](
api/router?id=animation
)
|App|
|animationDuration|Number|否|300|窗口关闭动画的持续时间,单位为 ms|App|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
```
javascript
// 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码
// 此处是A页面
uni
.
navigateTo
({
url
:
'
B?id=1
'
});
// 此处是B页面
uni
.
navigateTo
({
url
:
'
C?id=1
'
});
// 在C页面内 navigateBack,将返回A页面
uni
.
navigateBack
({
delta
:
2
});
```
### EventChannel@event-channel
2.
8.9+ 支持
页面间事件通信通道
**方法**
#### EventChannel.emit(string eventName, any args)
触发一个事件
string eventName
事件名称
any args
事件参数
#### EventChannel.off(string eventName, function fn)
取消监听一个事件。给出第二个参数时,只取消给出的监听函数,否则取消所有监听函数
string eventName
事件名称
function fn
事件监听函数
参数
any args
触发事件参数
#### EventChannel.on(string eventName, function fn)
持续监听一个事件
string eventName
事件名称
function fn
事件监听函数
参数
any args
触发事件参数
#### EventChannel.once(string eventName, function fn)
监听一个事件一次,触发后失效
string eventName
事件名称
function fn
事件监听函数
参数
any args
触发事件参数
Tips:
*
``navigateTo``
,
``redirectTo``
只能打开非 tabBar 页面。
*
``switchTab``
只能打开
``tabBar``
页面。
*
``reLaunch``
可以打开任意页面。
*
页面底部的
``tabBar``
由页面决定,即只要是定义为
``tabBar``
的页面,底部都有
``tabBar``
。
*
不能在
```App.vue```
里面进行页面跳转。
*
H5端页面刷新之后页面栈会消失,此时
`navigateBack`
不能返回,如果一定要返回可以使用
`history.back()`
导航到浏览器的其他历史记录。
**参考事项**
-
页面路由拦截和管理,插件市场有很多封装好的工具类,搜索
[
路由
](
https://ext.dcloud.net.cn/search?q=%E8%B7%AF%E7%94%B1
)
### 窗口动画@animation
> 本API仅App支持。小程序自身不支持自定义动画。H5的窗体动画可使用常规单页动画处理方案,见[H5下单页动画示例](https://ext.dcloud.net.cn/plugin?id=659&tdsourcetag=s_pctim_aiomsg)
窗口的显示/关闭动画效果,支持在 API、组件、pages.json 中配置,优先级为:
`API = 组件 > pages.json`
。
#### API
有效的路由 API
-
navigateTo
-
navigateBack
```
javascript
uni
.
navigateTo
({
url
:
'
../test/test
'
,
animationType
:
'
pop-in
'
,
animationDuration
:
200
});
uni
.
navigateBack
({
delta
:
1
,
animationType
:
'
pop-out
'
,
animationDuration
:
200
});
```
#### 组件
open-type 有效值
-
navigateTo
-
navigateBack
```
html
<navigator
animation-type=
"pop-in"
animation-duration=
"300"
url=
"../test/test"
>
navigator
</navigator>
<navigator
animation-type=
"pop-out"
animation-duration=
"300"
open-type=
"navigateBack"
>
navigator
</navigator>
```
#### pages.json
pages.json 中配置的是窗口显示的动画
```
javascript
"
style
"
:
{
"
app-plus
"
:
{
"
animationType
"
:
"
fade-in
"
,
"
animationDuration
"
:
300
}
}
```
显示动画与关闭动画,会有默认的对应规则。但是如果通过 API 或组件配置了窗口关闭的动画类型,则不会使用默认的类型。
|显示动画|关闭动画|显示动画描述(关闭动画与之相反)
|:-|:-|:-|
|slide-in-right|slide-out-right|新窗体从右侧进入|
|slide-in-left|slide-out-left|新窗体从左侧进入|
|slide-in-top|slide-out-top|新窗体从顶部进入|
|slide-in-bottom|slide-out-bottom|新窗体从底部进入|
|pop-in|pop-out|新窗体从左侧进入,且老窗体被挤压而出|
|fade-in|fade-out|新窗体从透明到不透明逐渐显示|
|zoom-out|zoom-in|新窗体从小到大缩放显示|
|zoom-fade-out|zoom-fade-in|新窗体从小到大逐渐放大并且从透明到不透明逐渐显示|
|none|none|无动画|
详细的窗口动画说明,请参考:
-
窗口显示的动画:
[
AnimationTypeShow
](
http://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.AnimationTypeShow
)
-
窗口关闭的动画:
[
AnimationTypeClose
](
http://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.AnimationTypeClose
)
**注意**
-
纯nvue项目(render为native),窗体动画默认进入动画为popin,返回为pop-out。如果想修改动画类型,只能通过uni.navigateTo API修改,在组件或pages.json里配置动画类型无效
-
非纯nvue项目,App端窗体动画,默认进入动画为slider-in-right,默认返回动画为pop-out
-
webview 中嵌入 uni-app H5时,使用 uni.webView.navigateTo... 跳转页面
### uni.navigateTo(OBJECT)
保留当前页面,跳转到应用内的某个页面,使用
```uni.navigateBack```
可以返回到原页面。
**OBJECT参数说明**
|参数|类型|必填|默认值|说明|平台差异说明|
|:-|:-|:-|:-|:-|:-|
|url|String|是||需要跳转的应用内非 tabBar 的页面的路径
, 一般为当前文件相对路径, 如../page/test, 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2',path为下一个页面的路径,下一个页面的onLoad函数可得到传递的参数| |
|animationType|String|否|pop-in|窗口显示的动画效果,详见:
[
窗口动画
](
api/router?id=animation
)
|App|
|animationDuration|Number|否|300|窗口动画持续时间,单位为 ms|App|
|events|Object|否||页面间通信接口,用于监听被打开页面发送到当前页面的数据。2.8.9+ 开始支持。||
|success|Function|否||接口调用成功的回调函数||
|fail|Function|否||接口调用失败的回调函数||
|complete|Function|否||接口调用结束的回调函数(调用成功、失败都会执行)|
|
**object.success 回调函数**
**参数**
**Object res**
|属性|类型|说明|
|:-|:-|:-|
|eventChannel|
[
EventChannel
](
api/router?id=event-channel
)
|和被打开页面进行通信|
**示例**
```
javascript
//在起始页面跳转到test.vue页面并传递参数
uni
.
navigateTo
({
url
:
'
test?id=1&name=uniapp
'
});
```
```
javascript
// 在test.vue页面接受参数
export
default
{
onLoad
:
function
(
option
)
{
//option为object类型,会序列化上个页面传递的参数
console
.
log
(
option
.
id
);
//打印出上个页面传递的参数。
console
.
log
(
option
.
name
);
//打印出上个页面传递的参数。
}
}
```
```
js
// 在起始页面跳转到test.vue页面,并监听test.vue发送过来的事件数据
uni
.
navigateTo
({
url
:
'
pages/test?id=1
'
,
events
:
{
// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
acceptDataFromOpenedPage
:
function
(
data
)
{
console
.
log
(
data
)
},
someEvent
:
function
(
data
)
{
console
.
log
(
data
)
}
...
},
success
:
function
(
res
)
{
// 通过eventChannel向被打开页面传送数据
res
.
eventChannel
.
emit
(
'
acceptDataFromOpenerPage
'
,
{
data
:
'
data from starter page
'
})
}
})
// 在test.vue页面,向起始页通过事件传递数据
onLoad
:
function
(
option
)
{
const
eventChannel
=
this
.
getOpenerEventChannel
();
eventChannel
.
emit
(
'
acceptDataFromOpenedPage
'
,
{
data
:
'
data from test page
'
});
eventChannel
.
emit
(
'
someEvent
'
,
{
data
:
'
data from test page for someEvent
'
});
// 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
eventChannel
.
on
(
'
acceptDataFromOpenerPage
'
,
function
(
data
)
{
console
.
log
(
data
)
})
}
```
url有长度限制,太长的字符串会传递失败,可改用
[
窗体通信
](
https://uniapp.dcloud.io/collocation/frame/communication
)
、
[
全局变量
](
https://ask.dcloud.net.cn/article/35021
)
,另外参数中出现空格等特殊字符时需要对参数进行编码,如下为使用
`encodeURIComponent`
对参数进行编码的示例。
```
html
<navigator
:url=
"'/pages/test/test?item='+ encodeURIComponent(JSON.stringify(item))"
></navigator>
```
```
javascript
// 在test.vue页面接受参数
onLoad
:
function
(
option
)
{
const
item
=
JSON
.
parse
(
decodeURIComponent
(
option
.
item
));
}
```
**注意:**
*
页面跳转路径有层级限制,不能无限制跳转新页面
*
跳转到 tabBar 页面只能使用 switchTab 跳转
*
路由API的目标页面必须是在pages.json里注册的vue页面。如果想打开web url,在App平台可以使用
[
plus.runtime.openURL
](
http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.openURL
)
或web-view组件;H5平台使用 window.open;小程序平台使用web-view组件(url需在小程序的联网白名单中)。在hello uni-app中有个组件ulink.vue已对多端进行封装,可参考。
### uni.redirectTo(OBJECT)
关闭当前页面,跳转到应用内的某个页面。
**OBJECT参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|url|String|是|需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
```
javascript
uni
.
redirectTo
({
url
:
'
test?id=1
'
});
```
**注意:**
*
跳转到 tabBar 页面只能使用 switchTab 跳转
### uni.reLaunch(OBJECT)
关闭所有页面,打开到应用内的某个页面。
**注意:**
如果调用了
[
uni.preloadPage(OBJECT)
](
https://uniapp.dcloud.net.cn/api/preload-page
)
不会关闭,仅触发生命周期
`onHide`
**OBJECT参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|url|String|是|需要跳转的应用内页面路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2',如果跳转的页面路径是 tabBar 页面则不能带参数|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
```
javascript
uni
.
reLaunch
({
url
:
'
test?id=1
'
});
```
```
javascript
export
default
{
onLoad
:
function
(
option
)
{
console
.
log
(
option
.
id
);
}
}
```
Tips:
*
H5端调用
`uni.reLaunch`
之后之前页面栈会销毁,但是无法清空浏览器之前的历史记录,此时
`navigateBack`
不能返回,如果存在历史记录的话点击浏览器的返回按钮或者调用
`history.back()`
仍然可以导航到浏览器的其他历史记录。
### uni.switchTab(OBJECT)
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。
**注意:**
如果调用了
[
uni.preloadPage(OBJECT)
](
https://uniapp.dcloud.net.cn/api/preload-page
)
不会关闭,仅触发生命周期
`onHide`
**OBJECT参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|url|String|是|需要跳转的 tabBar 页面的路径(需在 pages.json 的 tabBar 字段定义的页面),路径后不能带参数|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
pages.json
```
javascript
{
"
tabBar
"
:
{
"
list
"
:
[{
"
pagePath
"
:
"
pages/index/index
"
,
"
text
"
:
"
首页
"
},{
"
pagePath
"
:
"
pages/other/other
"
,
"
text
"
:
"
其他
"
}]
}
}
```
other.vue
```
javascript
uni
.
switchTab
({
url
:
'
/pages/index/index
'
});
```
### uni.navigateBack(OBJECT)
关闭当前页面,返回上一页面或多级页面。可通过
```getCurrentPages()```
获取当前的页面栈,决定需要返回几层。
**OBJECT参数说明**
|参数|类型|必填|默认值|说明|平台差异说明|
|:-|:-|:-|:-|:-|:-|
|delta|Number|否|1|返回的页面数,如果 delta 大于现有页面数,则返回到首页。||
|animationType|String|否|pop-out|窗口关闭的动画效果,详见:
[
窗口动画
](
api/router?id=animation
)
|App|
|animationDuration|Number|否|300|窗口关闭动画的持续时间,单位为 ms|App|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例**
```
javascript
// 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码
// 此处是A页面
uni
.
navigateTo
({
url
:
'
B?id=1
'
});
// 此处是B页面
uni
.
navigateTo
({
url
:
'
C?id=1
'
});
// 在C页面内 navigateBack,将返回A页面
uni
.
navigateBack
({
delta
:
2
});
```
### EventChannel@event-channel
2.
8.9+ 支持
页面间事件通信通道
**方法**
#### EventChannel.emit(string eventName, any args)
触发一个事件
string eventName
事件名称
any args
事件参数
#### EventChannel.off(string eventName, function fn)
取消监听一个事件。给出第二个参数时,只取消给出的监听函数,否则取消所有监听函数
string eventName
事件名称
function fn
事件监听函数
参数
any args
触发事件参数
#### EventChannel.on(string eventName, function fn)
持续监听一个事件
string eventName
事件名称
function fn
事件监听函数
参数
any args
触发事件参数
#### EventChannel.once(string eventName, function fn)
监听一个事件一次,触发后失效
string eventName
事件名称
function fn
事件监听函数
参数
any args
触发事件参数
Tips:
*
``navigateTo``
,
``redirectTo``
只能打开非 tabBar 页面。
*
``switchTab``
只能打开
``tabBar``
页面。
*
``reLaunch``
可以打开任意页面。
*
页面底部的
``tabBar``
由页面决定,即只要是定义为
``tabBar``
的页面,底部都有
``tabBar``
。
*
不能在
```App.vue```
里面进行页面跳转。
*
H5端页面刷新之后页面栈会消失,此时
`navigateBack`
不能返回,如果一定要返回可以使用
`history.back()`
导航到浏览器的其他历史记录。
**参考事项**
-
页面路由拦截和管理,插件市场有很多封装好的工具类,搜索
[
路由
](
https://ext.dcloud.net.cn/search?q=%E8%B7%AF%E7%94%B1
)
### 窗口动画@animation
> 本API仅App支持。小程序自身不支持自定义动画。H5的窗体动画可使用常规单页动画处理方案,见[H5下单页动画示例](https://ext.dcloud.net.cn/plugin?id=659&tdsourcetag=s_pctim_aiomsg)
窗口的显示/关闭动画效果,支持在 API、组件、pages.json 中配置,优先级为:
`API = 组件 > pages.json`
。
#### API
有效的路由 API
-
navigateTo
-
navigateBack
```
javascript
uni
.
navigateTo
({
url
:
'
../test/test
'
,
animationType
:
'
pop-in
'
,
animationDuration
:
200
});
uni
.
navigateBack
({
delta
:
1
,
animationType
:
'
pop-out
'
,
animationDuration
:
200
});
```
#### 组件
open-type 有效值
-
navigateTo
-
navigateBack
```
html
<navigator
animation-type=
"pop-in"
animation-duration=
"300"
url=
"../test/test"
>
navigator
</navigator>
<navigator
animation-type=
"pop-out"
animation-duration=
"300"
open-type=
"navigateBack"
>
navigator
</navigator>
```
#### pages.json
pages.json 中配置的是窗口显示的动画
```
javascript
"
style
"
:
{
"
app-plus
"
:
{
"
animationType
"
:
"
fade-in
"
,
"
animationDuration
"
:
300
}
}
```
显示动画与关闭动画,会有默认的对应规则。但是如果通过 API 或组件配置了窗口关闭的动画类型,则不会使用默认的类型。
|显示动画|关闭动画|显示动画描述(关闭动画与之相反)
|:-|:-|:-|
|slide-in-right|slide-out-right|新窗体从右侧进入|
|slide-in-left|slide-out-left|新窗体从左侧进入|
|slide-in-top|slide-out-top|新窗体从顶部进入|
|slide-in-bottom|slide-out-bottom|新窗体从底部进入|
|pop-in|pop-out|新窗体从左侧进入,且老窗体被挤压而出|
|fade-in|fade-out|新窗体从透明到不透明逐渐显示|
|zoom-out|zoom-in|新窗体从小到大缩放显示|
|zoom-fade-out|zoom-fade-in|新窗体从小到大逐渐放大并且从透明到不透明逐渐显示|
|none|none|无动画|
详细的窗口动画说明,请参考:
-
窗口显示的动画:
[
AnimationTypeShow
](
http://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.AnimationTypeShow
)
-
窗口关闭的动画:
[
AnimationTypeClose
](
http://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.AnimationTypeClose
)
**注意**
-
纯nvue项目(render为native),窗体动画默认进入动画为popin,返回为pop-out。如果想修改动画类型,只能通过uni.navigateTo API修改,在组件或pages.json里配置动画类型无效
-
非纯nvue项目,App端窗体动画,默认进入动画为slider-in-right,默认返回动画为pop-out
-
webview 中嵌入 uni-app H5时,使用 uni.webView.navigateTo... 跳转页面
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录