微信小程序组件传值和组件通信
自定义组件
1.在根目录下创建components文件夹,用于存放组件,创建test组件,不需要再在app.json中引入
组件使用
(1)在子组件的json添加如下代码;
{
"component": true, //是否为组件
"usingComponents": {}
}
(2)在父组件的json文件中添加如下代码:
{
"usingComponents": {
"myFirst":"/components/test/test" //子组件的地址
}
}
(3)父组件页面使用
<myFirst motto="{{motto}}" bindsend="send"></myFirst>
组件通信
父传子
(1)在父组件的js文件定义数据
data: {
motto: 'Hello World',
},
(2)子组件接受数据,在properties定义数据类型和默认值
properties: {
motto:{
type:String, //类型
value:'默认是:你好,世界' //默认值
},
},
(3)页面渲染:在wxml添加如下代码:
<view>
父组件数据:{{motto}}
</view>
子传父
(1)在子组件text.wxml定义一个button,用于传递数据
<view>
我是自定义组件
<button bindtap="send">点击按钮向父组件传值</button>
</view>
(2)在子组件test.js中定义事件和数据
// components/test/test.js
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
msg:'我是子组件'
},
/**
* 组件的方法列表
*/
methods: {
send(){
this.triggerEvent('send',this.data.msg)
}
}
})
(3)父组件接受数据,自定义事件test.wxml添加如下代码:
<!--index.wxml-->
<view class="container">
<myFirst motto="{{motto}}" bindsend="send"></myFirst>
</view>
(4)在父组件地test.js中添加send方法,用于输出子组件的数据
send(e){
console.log(e.detail);
},