美文网首页
小程序UITool.wxs,component文件

小程序UITool.wxs,component文件

作者: 姬歌 | 来源:发表于2019-10-12 12:08 被阅读0次

UITool.wxs,.wxs文件,是可以在.wxml文件的标签节点中直接调用执行的方法对象。.wxml标签只能显示数据,而不能进行运算,但是UITool.wxs可执行js方法运算。.wxml标签内可插入UITool.wxs中的方法进行运算。

.wxml标签节点运算工具UITool.wxs

UITool.wxs是单一文件,不需要其它文件协同工作。用途举例:要在<view></view>节点上显示一个状态,但是只能获取到状态码,-1,0,1,分别对应'认证不通过','认证中'和'认证通过'。需要分别显示对应的文案。但是在<view></view>内不允许进行计算,就只能直接显示-1,0,1;用户是看不懂这个-1是什么意思的。所以需要转化,这时就必须借助UITool.wxs进行计算结果。

var uitool = {
  getCarIdentifyStateDesc: function (state) {
     if (state == undefined || state == 1) {
       return ''
     } else if (state == -1) {
       return '审核不通过'
     }else {
       return '认证中...'
     }
   },
}

module.exports = {
  getCarIdentifyStateDesc: uitool.getCarIdentifyStateDesc,
}

MyUI.wxml

<wxs module='uitool' src='../../../utils/UITool.wxs' />
<view class="item flex_horizontal_center spaceBetween" wx:for='{{cars}}'>
  <view>{{item.vehicleNo}}</view>
  <view>{{uitool.getCarIdentifyStateDesc(item.auditStatus)}}</view>
</view>

组件component

component,和一个page一样,一个组件包含4个文件,.js,.json,.wxml,.wxss。
应用场景:多个页面需要相同的支付弹窗,只需要写一次就可以直接用。

payboard.js

Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    showModal: false,
    selectedPayType: 'wechatPay',   //or 'wallet'
    title: '',    //show extra info.eg: 'price: $22.5'
    balanceDesc: ''   // (xxx元)
  },

  /**
   * 组件的方法列表
   */
  methods: {
    show(balance, title) {
      this.setData({
        showModal: true,
      })
    },

    hide() {
      this.setData({
        showModal: false
      })
    },
    //确定按钮(预付费)
    _payBtnTap: function (e) {
      if (true) {
        this.hide()
      }

      let thePayType = this.data.selectedPayType;

      var myEventDetail = { payType: thePayType} // detail对象,提供给事件监听函数
      var myEventOption = {} // 触发事件的选项
      this.triggerEvent('myevent', myEventDetail, myEventOption)
    },

    _radioChage: function (e) {
      this.setData({ selectedPayType: e.detail.value });
    },

    _blankAreaTap: function (e) {
      if (true) {
        this.hide()
      }
    },
  },

})

payboard.json

{
  "component": true,
  "usingComponents": {}  //如果引用到其他组件,则添加
}

payboard.wxml

<view class='componentMask' wx:if='{{showModal}}'>

  <view class='payTypeBoard'>
...
    <view class='confirmBtn' style='margin-top:24pt;' bindtap='_payBtnTap'>确定</view>
  </view>
  <view class='blankArea' bindtap='_blankAreaTap'></view>
</view>

payboard.wxss

.componentMask {
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 9000;

    display: flex;
    flex-direction: column-reverse;
    align-items: center;
}
...

应用组件

home.wxml,注意bindmyevent与组件内triggerEvent方法第1个参数的关系

<view class='contentView'><view>
<payboard id='pbid' bindmyevent='payConfrim' />

home.json

{
  "usingComponents": {
    "payboard": "/components/payboard/payboard",
  }
}

home.js 注意e.detail.payType与组件内triggerEvent方法第2个参数的关系

onReady: function () {
    this.payboard = this.selectComponent('#pbid')
  },
payConfrim: function(e) {
    console.log(e)
    let payType = e.detail.payType
  },

相关文章

网友评论

      本文标题:小程序UITool.wxs,component文件

      本文链接:https://www.haomeiwen.com/subject/gufqmctx.html