一、父组件传给子组件 1.在component目录中创建testcomponent文件    在testcomponent.wxml中写结构       <view bindtap='clickEvent' data-age='{{age}}'>{{age}}</view> 可以看出页面中写了个绑定函数,在testcomponent.js中调用它   首先定义一个属性列表和属性的方法      Component({   /**    * 组件的属性列表    */   properties: {     age:{       type:Number,       value:12     }   },     /**    * 组件的初始数据    */   data: {     },     /**    * 组件的方法列表    */   methods: {     clickEvent(e){       console.log(e);         this.triggerEvent('click',e.currentTarget.dataset.age)       父和子之间使用triggerEvent进行传递 组件间通信与事件。可点击这个查看详细介绍     }   } }) 2.引用组件       引入的文件。首先在引用文件的json文件夹中引入路径并定义好组件的名称。 如下。 //demo.json     {   "usingComponents":{     "test":"/component/testcomponent/testcomponent"   } }     在demo.wxml使用组件     <!-- 通过test组件把age的值传到组件目录中,再为它绑定一个事件 -->     <test age="23" bindclick="clickEvent"></test>      demo.js    Page({       data:{          age:2        //定义age为2,把2传到页面组件中,再通过页面组件传到组件目录中,最后显示出来    }, clickEvent(e){    console.log('123')  }   }) 页面的初始值为12,通过传递给父组件,值由12变为23。从下图可以看出会同时触发testcomponent和demo里面的方法            小程序之组件 随笔 第1张      二、子组件传给父组件 父组件中的内容都一样,就不叙述了。      Component({   /**    * 组件的属性列表    */   properties: {     age:{       type:Number,       value:12     }   },     /**    * 组件的初始数据    */   data: {     },     /**    * 组件的方法列表    */   methods: {     clickEvent(e){         console.log(e);          this.triggerEvent('click',e.currentTarget.dataset.age)     }   } })    子组件的内容 demo.wxml   <test age="{{age}}" bindclick="saveEvent"></test>   demo.js Page({   data:{      age:20      //子组件中的值   },   clickEvent(e){    console.log(e.detail) }, saveEvent({detail}){     console.log('123'); } }) 传给父组件之后值由12变为20。 小程序之组件 随笔 第2张 小程序之组件 随笔 第3张   定义事件。如下 Page({   data:{      age:20   },   clickEvent(e){    this.setData({       age:detail + 1    }) }, //  父的参数传给子组件 saveEvent({detail}){    console.log(detail)   this.setData({     age:detail + 1   }) } }) 如下:点击之后由20变为21 小程序之组件 随笔 第4张 小程序之组件 随笔 第5张   完整代码:    父组件代码       .wxml代码 <!-- 使用data接收子组件传来的数据 --> <view bindtap='clickEvent' data-age='{{age}}'>{{age}}</view>   .js代码 // component/testcomponent/testcomponent.js Component({   /**    * 组件的属性列表    */   properties: {     age:{       type:Number,       value:12     }   },     /**    * 组件的初始数据    */   data: {     },     /**    * 组件的方法列表    */   methods: {     clickEvent(e){       console.log(e);       this.triggerEvent('click',e.currentTarget.dataset.age)     }   } }) 子组件代码:  引入父组件的路径并定义一个组件 .json文件     {   "usingComponents":{     "test":"/component/testcomponent/testcomponent"   } }     .wxml文件    <!-- 通过test组件把age的值传到组件目录中,再为它绑定一个事件 -->   <!-- 父的事件 -->   <test age="23" bindclick='clickEvent'></test>   <!--子的事件 -->   <test age="{{age}}"  bindclick="saveEvent"></test>   .js文件   Page({   data:{      age:20   },   clickEvent(e){       console.log(e.detail) },     saveEvent({detail}){    console.log(detail)   this.setData({     age:detail + 1   }) } })
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄