Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
a51139dc
U
uni-app
项目概览
DCloud
/
uni-app
4 个月 前同步成功
通知
730
Star
38706
Fork
3642
代码
文件
提交
分支
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看板
未验证
提交
a51139dc
编写于
10月 19, 2020
作者:
hbcui1984
提交者:
GitHub
10月 19, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update communication.md
上级
d520839c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
109 addition
and
109 deletion
+109
-109
docs/api/window/communication.md
docs/api/window/communication.md
+109
-109
未找到文件。
docs/api/window/communication.md
浏览文件 @
a51139dc
> 自 HBuilderX 2.0.0 起自定义组件编译模式支持,[使用指南](https://ask.dcloud.net.cn/article/36010)
> 自 HBuilderX 2.0.0 起自定义组件编译模式支持,[使用指南](https://ask.dcloud.net.cn/article/36010)
### uni.$emit(eventName,OBJECT)
触发全局的自定
事件。附加参数都会传给监听器回调
。
触发全局的自定
义事件,附加参数都会传给监听器回调函数
。
|属性 |类型 |描述 |
|--- |--- |--- |
|eventName |String |事件名 |
|OBJECT |Object |触发事件携带的附加参数 |
**代码示例**
```
javascript
uni
.
$emit
(
'
update
'
,{
msg
:
'
页面更新
'
})
```
### uni.$on(eventName,callback)
监听全局的自定义事件
。事件可以由 uni.$emit 触发,回调函数会接收所有传入事件触发函数的额外参数。
**代码示例**
```
javascript
uni
.
$emit
(
'
update
'
,{
msg
:
'
页面更新
'
})
```
### uni.$on(eventName,callback)
监听全局的自定义事件
,事件由
`uni.$emit`
触发,回调函数会接收事件触发函数的传入参数。
|属性 |类型 |描述 |
|--- |--- |--- |
|eventName |String |事件名 |
|callback |Function |事件的回调函数 |
**代码示例**
```
javascript
uni
.
$on
(
'
update
'
,
function
(
data
){
console
.
log
(
'
监听到事件来自 update ,携带参数 msg 为:
'
+
data
.
msg
);
})
```
### uni.$once(eventName,callback)
监听全局的自定义事件。事件可以由 uni.$emit 触发,但是只触发一次,在第一次触发之后移除监听器。
**代码示例**
```
javascript
uni
.
$on
(
'
update
'
,
function
(
data
){
console
.
log
(
'
监听到事件来自 update ,携带参数 msg 为:
'
+
data
.
msg
);
})
```
### uni.$once(eventName,callback)
监听全局的自定义事件,事件由
`uni.$emit`
触发,但仅触发一次,在第一次触发之后移除该监听器。
|属性 |类型 |描述 |
|--- |--- |--- |
|eventName |String |事件名 |
|callback |Function |事件的回调函数 |
**代码示例**
```
javascript
uni
.
$once
(
'
update
'
,
function
(
data
){
console
.
log
(
'
监听到事件来自 update ,携带参数 msg 为:
'
+
data
.
msg
);
})
```
### uni.$off([eventName, callback])
移除全局自定义事件监听器。
**代码示例**
```
javascript
uni
.
$once
(
'
update
'
,
function
(
data
){
console
.
log
(
'
监听到事件来自 update ,携带参数 msg 为:
'
+
data
.
msg
);
})
```
### uni.$off([eventName, callback])
移除全局自定义事件监听器。
|属性 |类型 |描述 |
|--- |--- |--- |
|eventName |Array<String> |事件名 |
|callback |Function |事件的回调函数 |
**Tips**
-
如果
没有提供参数,则移除所有的事件监听器;
-
如果只提供了事件
,则移除该事件所有的监听器;
-
如果同时提供了事件与回调,则只移除这个
回调的监听器;
-
提供的回调必须跟$on的回调为同一个才能移除这个回调的监听器;
**代码示例**
`$emit`
、
`$on`
、
`$off`
常用于跨页面、跨组件通讯,这里为了方便演示放在同一个页面
```
html
<template>
<view
class=
"content"
>
<view
class=
"data"
>
<text>
{{val}}
</text>
</view>
<button
type=
"primary"
@
click=
"comunicationOff"
>
结束监听
</button>
</view>
</template>
<script>
export
default
{
data
()
{
return
{
val
:
0
}
},
onLoad
()
{
setInterval
(()
=>
{
uni
.
$emit
(
'
add
'
,
{
data
:
2
})
},
1000
)
uni
.
$on
(
'
add
'
,
this
.
add
)
},
methods
:
{
comunicationOff
()
{
uni
.
$off
(
'
add
'
,
this
.
add
)
},
add
(
e
)
{
this
.
val
+=
e
.
data
}
}
}
</script>
<style>
.content
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
}
.data
{
text-align
:
center
;
line-height
:
40px
;
margin-top
:
40px
;
}
button
{
width
:
200px
;
margin
:
20px
0
;
}
</style>
```
**注意事项**
-
uni.$emit、 uni.$on 、 uni.$once 、uni.$off 触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等
-
使用时,注意及时销毁事件监听,比如,页面 onLoad 里边 uni.$on 注册监听,onUnload 里边 uni.$off 移除,或者一次性的事件,直接使用 uni.$once 监听
|callback |Function |事件的回调函数 |
**Tips**
-
如果
uni.$off没有传入参数,则移除App级别的所有事件监听器;
-
如果只提供了事件
名(eventName),则移除该事件名对应的所有监听器;
-
如果同时提供了事件与回调,则只移除这个
事件回调的监听器;
-
提供的回调必须跟$on的回调为同一个才能移除这个回调的监听器;
**代码示例**
`$emit`
、
`$on`
、
`$off`
常用于跨页面、跨组件通讯,这里为了方便演示放在同一个页面
```
html
<template>
<view
class=
"content"
>
<view
class=
"data"
>
<text>
{{val}}
</text>
</view>
<button
type=
"primary"
@
click=
"comunicationOff"
>
结束监听
</button>
</view>
</template>
<script>
export
default
{
data
()
{
return
{
val
:
0
}
},
onLoad
()
{
setInterval
(()
=>
{
uni
.
$emit
(
'
add
'
,
{
data
:
2
})
},
1000
)
uni
.
$on
(
'
add
'
,
this
.
add
)
},
methods
:
{
comunicationOff
()
{
uni
.
$off
(
'
add
'
,
this
.
add
)
},
add
(
e
)
{
this
.
val
+=
e
.
data
}
}
}
</script>
<style>
.content
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
}
.data
{
text-align
:
center
;
line-height
:
40px
;
margin-top
:
40px
;
}
button
{
width
:
200px
;
margin
:
20px
0
;
}
</style>
```
**注意事项**
-
uni.$emit、 uni.$on 、 uni.$once 、uni.$off 触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等
-
使用时,注意及时销毁事件监听,比如,页面 onLoad 里边 uni.$on 注册监听,onUnload 里边 uni.$off 移除,或者一次性的事件,直接使用 uni.$once 监听
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录