项目场景:

小程序出库功能,选择出库食材,输入出库金额。点击确定将该食材的信息以及出库数量进行存储。默认的出库数量显示当前所有的库存数量。数字输入采用ivew Weapp中的InputNumber组件
在这里插入图片描述

问题描述:

在微信开发者工具中进行调试,直接在input框中输入出库数量,然后点击确认。没有任何问题,真机上面调试直接输入一个出库数量,点击确定得到的出库数量依然是之前默认的当前的库存数量。手动输入的数字没有任何效果。


原因分析:

因为InputNumber绑定的事件是失去焦点以后,将这个值传递出来。所以点击确定的时候,实际执行顺序是先执行了_confirmEvent()这个事件,此时输入的值还未进行改变。然后才执行的handleChange1这个文本值改变的监听事件。
handleChange1: function(e) {
      this.setData({
        outQty1: e.detail.value
      })
    },
 _confirmEvent:function(){
      let that=this;
       setTimeout(function () {
          // //触发成功回调
          that.triggerEvent("confirmEvent", {
            qty1: that.data.outQty1,
            qty2: that.data.outQty2
          });
        }, 20);
    }

解决方案:

this.setData({
        outQty1: e.detail.value
      })
      if(this.data.isFinished==false){
        this.setData({
          isFinished:true
        })
        this._confirmEvent();
      }
 _confirmEvent:function(){
      let that=this;
      if (that.data.isFinished==true){
        setTimeout(function () {
          // //触发成功回调
          that.triggerEvent("confirmEvent", {
            qty1: that.data.outQty1,
            qty2: that.data.outQty2
          });
        }, 20);
      }
    }
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐