zoukankan      html  css  js  c++  java
  • 微信小程序之条件判断

    前文:

      今天踩了一下午的坑,但是确实很简单的问题。

       我说一下需求:扫描商品的二维码,从而判断,同一个二维码不可多次扫描;

       

     点击扫一扫 会在灰色区域展示 扫描的商品信息,比如商品名称,商品码等,但是我们的需求是一物一码,即使是同一个商品也是不同的商品码。

     错误示例:

         最开始我的想法是做判断,因为我会在相对应的js文件中定义一个 productList:[ ],数组来存放数据,

    Pages({
        productList: [用来存放,通过后台接口得到的相关商品的数据信息]
        
    })

    由于我们是一物一码,那唯一的判断条件就是商品码了

    wzy.post("/wx/open/getProdcutNameByCode", product, true)
                 .then((res) => {
                   
                   let products={
                     name: res.data.data,
                     code:product.code,
                   }
    
                   let productLength = this.data.productIist.length;
    
                  
                  //如果列表没有直接推,如果有循环,如果
                   if (productLength==0){
                     this.data.productIist.push(products);
                     this.setData({
                       productIist: this.data.productIist
                     })
                   }else{
    
                     for (let i = 0; i < productLength;i++){
                       if (products.code == this.data.productIist[i].code){
                          global.jv.showPop('提示','同一商品不可重复扫描')
                          return
                        }
                     }
                     this.data.productIist.push(products);
                     this.setData({
                       productIist: this.data.productIist
                     })
                   }
                 }).catch((res) => {
                   console.log(res)
                   wzy.showPop('提示', '当前网络繁忙,请重新扫描')
                 })
             },

    原来的思路是:

     .then((res) => {
                   
                   let products={
                     name: res.data.data,
                     code:product.code,
                   }
    
                   let productLength = this.data.productIist.length;
    
                  
                  //如果列表没有直接推,如果有循环,如果
                   if (productLength==0){
                     this.data.productIist.push(products);
                     this.setData({
                       productIist: this.data.productIist
                     })
                   }else{
                     // 原来思路:把数组中的每一项code取出来与扫码得到的code进行对比,如果不相等就push到数组中 从而在页面循环,但是发现
     // 当数组的length>1的情况下,会发生即使你扫码得到的code不与原数组相同但是会重复多次,次数由productIist.length决定
                     
                productIist.forEach(item=>{
                       if(item.code !==this.data.productIist.code ) {
                        this.data.productIist.push(products);
                     this.setData({
                       productIist: this.data.productIist
                     })
            }
        
    })
                 }).catch((res) => {
                   console.log(res)
                   wzy.showPop('提示', '当前网络繁忙,请重新扫描')
                 })
             },              

    所以 在上面的正确的示例中 使用for循环 并把判断也写进for循环中  如果数组中的code与扫描的code相等 就会弹出提示框,并且不会执行下面代码,但是当条件不相符的时候,便可以愉快的执行下面的代码了。

    文中的wzy封装的方法

  • 相关阅读:
    补间动画 帧动画 基本使用 案例 [MD]
    Builder 建造者模式 MD
    Prototype 原型模式 复制 浅拷贝 clone [MD]
    Composite 组合模式 树 递归 MD
    Proxy 代理模式 动态代理 cglib MD
    Decorator Wrapper 装饰模式 MD
    Adapter 适配器模式 MD
    Observer 观察者模式 MD
    Template Method 模板方法 MD
    剪切板 复制文本 ClipboardManager
  • 原文地址:https://www.cnblogs.com/wzy0526/p/8298274.html
Copyright © 2011-2022 走看看