Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
fab0e082
U
uni-app
项目概览
DCloud
/
uni-app
通知
698
Star
38703
Fork
3641
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fab0e082
编写于
8月 21, 2020
作者:
d-u-a
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: new api eventChannel
上级
41dc7a37
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
109 addition
and
0 deletion
+109
-0
docs/api/router.md
docs/api/router.md
+109
-0
未找到文件。
docs/api/router.md
浏览文件 @
fab0e082
...
...
@@ -9,10 +9,22 @@
|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.8+ 开始支持。||
|success|Function|否||接口调用成功的回调函数||
|fail|Function|否||接口调用失败的回调函数||
|complete|Function|否||接口调用结束的回调函数(调用成功、失败都会执行)|
|
**object.success 回调函数**
**参数**
**Object res**
|属性|类型|说明|
|:-|:-|:-|
|eventChannel|
[
EventChannel
](
api/router?id=event-channel
)
|和被打开页面进行通信|
**示例**
```
javascript
...
...
@@ -31,6 +43,40 @@ export default {
}
```
```
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: 'test' })
}
})
```
```
// test.js
onLoad: function(option) {
console.log(option.query)
const eventChannel = this.getOpenerEventChannel()
eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
eventChannel.emit('someEvent', {data: 'test'});
// 监听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`
等多种方式解决,如下为
`encodeURIComponent`
示例。
```
html
<navigator
:url=
"'/pages/test/test?item='+ encodeURIComponent(JSON.stringify(item))"
></navigator>
...
...
@@ -179,6 +225,69 @@ uni.navigateBack({
});
```
#### EventChannel@event-channel
2.
8.8+ 支持
页面间事件通信通道
**方法**
#### 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``
页面。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录