码迷,mamicode.com
首页 > 微信 > 详细

小程序之组件

时间:2019-05-06 19:11:29      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:mfc   alt   bee   sim   drop   dsc   dev   bdr   iba   

一、父组件传给子组件
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里面的方法  
        技术图片
 
 
 二、子组件传给父组件
父组件中的内容都一样,就不叙述了。
 
   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。
技术图片技术图片
 
定义事件。如下
Page({
  data:{
     age:20
  },
 
clickEvent(e){
   this.setData({
      age:detail + 1
   })
},
//  父的参数传给子组件
saveEvent({detail}){
   console.log(detail)
  this.setData({
    age:detail + 1
  })
}
})
如下:点击之后由20变为21
技术图片技术图片
 
完整代码:
   父组件代码
      .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
  })
}
})

小程序之组件

标签:mfc   alt   bee   sim   drop   dsc   dev   bdr   iba   

原文地址:https://www.cnblogs.com/combating/p/10821234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!