说一下微信小程序组件中如何进行通信
1、父组件传给子组件
a、先在父组件中的.json文件中引入子组件(相对路径)
{
"usingComponents": {
MyToast:"相对路径(子组件)"
}
}
b、在父组件写法:通过viewText="{{viewText}}"传向子组件
<MyToast viewText="{{viewText}}" bind:myEvent="OnViewText"></MyToast>
c、子组件写法:子组件是通过properties
来获取父组件传过来的数据
properties:{
viewText:{ //属性名
type:Number, //类型,必填项 目前接受的类型有:
String,Number,Boolean,Object,Arrray,null(表示任意类型)
value:'' //属性初始值(可选)如果未制定,会根据类型选择一个。
}
}
2、子组件传给父组件
a、子组件写法:
//这里的input是子组件中的某个输入框
<input type="number" bindinput="getInputnumber" value="{{codes}}"></input>
methods:{
//这里是bindinput的方法名
getInputnumber:function(e){
this.triggerEvent('myEvent',e.detail.value) //这里的myEvent是自己自定义的事件名字,需要父组件中通过他来接受,
}
}
b、父组件写法:这里我用的是上边父组件的名字,也就是说子组件在触发这个方法后需要在父组件中手动获取就好了。
<MyToast viewText="{{viewText}}" bind:myEvent="OnViewText"></MyToast>
//这里的myEvent是子组件传递过来的自定义事件名称,OnViewText这个是父组件中自定义的事件名称
OnViewText:function(e){
//这立的这个e就是子组件传过来的值
console.log(e)
}
3、定义全局变量globalData
a、在app.js文件中定义全局属性,并赋值
globalData: {//全局变量
amap: "",
key: "",
}
注:在app.js文件中使用时,直接赋值就可以了。this.globalData.amap="111111";
b、在组件中使用:
getApp().globalData.amap