## **组件间通信与事件**
### 组件间通信
组件间的基本通信方式有以下几种。
**1.WXML 数据绑定:用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容数据。**
```
<view>
<component-tag-name prop-a="{{dataFieldA}}" prop-b="{{dataFieldB}}">
</component-tag-name>
</view>
```
**2.事件:用于子组件向父组件传递数据,可以传递任意数据。
事件分为冒泡和非冒泡事件。**

```
//index.wxml
<like isLike="{{classic.like_status}}" count="{{classic.fav_nums}}" bind:like="onLike"></like>
```
>[danger] 使用bind為like組件綁定事件名為like的事件
index.js
```
Page({
onLoad() {
wx.request({
url: 'http://bl.7yue.pro/v1/classic/latest',
header: {
'Content-Type': 'application/json',
"appkey": "9xK0CrzQREI1yGPh"
},
success: res => {
this.setData({
classic: res.data
})
}
})
},
onLike(e){
console.log(e.detail)
}
})
```
like.wxml
```
<view>
<image src="{{isLike?yesSrc:noSrc}}" catchtap="onLike"></image>
<text>{{count}}</text>
</view>
```
like.js
```
Component({
properties: {
isLike:{
type:Boolean,
value:false
},
count:{
type:Number,
value:0
}
},
data: {
yesSrc:"/images/like.png",
noSrc:"/images/unlike.png"
},
methods: {
onLike(){
var isLike = this.properties.isLike;
var count = this.properties.count;
count = isLike?count-1:count+1;
this.setData({
isLike:!isLike,
count:count
})
// 子组件自定义事件向父组件传递 传递事件名称和参数
let behavior = this.properties.isLike?"like":"like/cancel";
this.triggerEvent("like",{behavior:behavior})
}
}
})
```
>[info] triggerEvent 方法可以包含三个参数,分别是事件名、detail 对象、事件选项
> 在获取到 dataset 中的参数之后,可以当做 detail 对象传给父组件
关于 triggerEvent 的第三个参数“事件选项”,可以参考这个表格:

**3.父组件通过 this.selectComponent 方法获取子组件实例对象,可以直接访问组件的任意数据和方法。**
- 接口文档
- 1.开发环境的配置
- 2.wxml语法
- 2.1数据绑定
- 2.2列表渲染
- 2.3条件渲染
- 2.4模板引用
- 2.5事件
- 冒泡与非冒泡
- 2.6skill
- 2.7小程序接口调用
- 2.8获取自定义的属性值
- 2.9 Class动态绑定
- 3.小程序API组件
- 3.1音乐播放
- demo
- 3.2target与currentTarget
- 3.3下方导航页切换(tobar)
- 3.4let,var和const的区别
- 3.5轮播
- 3.6map
- 3.7 previewImage
- 3.8 chooseImage使用照相机
- 3.9 onReachBottom上拉刷新
- 3.10 下拉加载
- 3.11 使用缓存
- 3.12 scroll-view
- 3.13 webview
- 3.14 导航条加载,页面加载
- 3.15 模态框,弹出框
- 3.16 修改顶部标题
- 3.17 form,input获取内容
- 4.封装模板与自定义组件
- 4.1 父组件向子组件传参
- 4.2 behavior将子组件公共的部分封装
- 4.3 子组件自定义事件向组件传参
- 4.4 slot--父组件向子组件传递wxml
- 4.5 外部样式--父组件向子组件传递wxss
- 4.6 组件向页面传参
- 5.生命周期
- 6.HTTP封装
- 2.初代
- 4.终级豪华进化版本
- 7.精选小语法
- 7.1 text标签
- 7.2 wxs文件
- 7.3路径
- 7.4 小程序正则
- 8.demo
- 1.取数据并渲染的小程序
- data
- local.js
- images
- pages
- template
- template.wxml
- template.wxss
- index
- index-detail
- index-detail.js
- index-detail.json
- index-detail.wxml
- index-detail.wxss
- index.js
- index.json
- index.wxml
- index.wxss
- map
- map.js
- map.json
- map.wxml
- map.wxss
- movies
- movies.js
- movies.json
- movies.wxml
- movies.wxss
- web-page
- welcome
- utils
- utils.js
- app.js
- app.json
- app.wxss
