微信小程序 组件

2021-02-24  本文已影响0人  IamaStupid

小程序 组件

选择components文件夹,右键,新建component,会自动生成组件文件,js/json/wxml/wxss一共四个文件。
比如,做一个自定义的选择框组件,居左是标题文字,居右是两个选择框。

my-checkbox.wxml
<view class="com-cell">
  <view class="cell-title">{{porpTitle}}</view>
  <view class="cell-right">
    <view class="my-radio-box {{checkedNum==='1'? 'checked': ''}}"
      bindtap="onTap" data-key="{{propKey}}" data-val="1">{{yes}}</view>
    <view class="my-radio-box {{checkedNum==='0'?'checked': ''}}"
      bindtap="onTap" data-key="{{propKey}}" data-val="0">{{no}}</view>
  </view>
</view>
my-checkbox.js
// components/my-checkbox.js
Component({
  // 这个设置表示组件可以使用全局样式
  options: {
    addGlobalClass: true
  },
  /**
   * 组件的属性列表
   */
  properties: {
    checkedNum: String,
    propKey: String,
    porpTitle: String
  },

  /**
   * 组件的初始数据
   */
  data: {
    yes: '有',
    no: '无'
  },
  observers: {
    'porpTitle': function (newVal) {
      // console.log(newVal)
      if (newVal.indexOf('婚姻') > -1) {
        this.setData({
          yes: '已婚',
          no: '未婚'
        })
      }
    }
  },
  /**
   * 组件的方法列表
   */
  methods: {
    onTap: function(e) {
      // console.log('/////', e)
      this.triggerEvent('myevent', e.currentTarget.dataset, {})
    }
  }
})
pages中使用组件的页面 home.wxml
// home.json
{
  "usingComponents": {
    "my-checkbox": "/components/my-checkbox"
  }
}

// home.wxml
<my-checkbox bindmyevent="myCheckFn" prop-key="gjj"
             checked-num="{{form.gjj}}"
             porp-title="是否缴纳公积金"></my-checkbox>

// home.js
data: {
    form: {
      money: '',
      gjj: ''
    }
  },
  myCheckFn (event) {
    let obj = Object.assign({}, this.data.form)
    let key = event.detail.key || event.target.dataset.key
    let val = event.detail.val || event.target.dataset.val
    obj[key] = val
    this.setData({
      form: obj
    })
    // console.log(event, key, val, typeof val)
  },
onMoneyTab (e) {
    // console.log(e)
    let money = e.currentTarget.dataset.money
    this.setData({
      'form.money': money
    })
  },
.......
上一篇下一篇

猜你喜欢

热点阅读