微信小程序之条件判断

摘要:
我说一下需求:扫描商品的二维码,从而判断,同一个二维码不可多次扫描;点击扫一扫会在灰色区域展示扫描的商品信息,比如商品名称,商品码等,但是我们的需求是一物一码,即使是同一个商品也是不同的商品码。

前文:

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

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

微信小程序之条件判断第1张

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

错误示例:

最开始我的想法是做判断,因为我会在相对应的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封装的方法

免责声明:文章转载自《微信小程序之条件判断》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Go数组oracle查询数据中包含字段替换其他内容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

QT项目性能调优小记

最近的项目用到了QT 5.5,项目在运行过程中出现了一段时间CPU占用率持续25%,并频繁断网的情况,遂决定对项目性能进行优化。 优化工具也是VS2010自带的性能分析工具,具体的使用方法参见:http://www.cnblogs.com/smark/archive/2011/10/12/2208039.html 其中可以选择“just my code”过...

Angularjs总结(三)摸态框的使用

静态页面: <input class="btn btnStyle "value="提&emsp;取"type="button"ng-click="TQZJDFG() " /> controllers中的方法: 1 $scope.TQZJDFG = function() { 2 //可以将此参数传递到所弹出的摸态框的控制器中 3...

centos7快速搭建Minio个人文件服务器

centos7使用Minio快速搭建个人文件服务器 Minio是一个高性能的对象存储服务器,开箱即用,适合个人搭建文件服务器。 一.下载 1.下载minio服务端,访问官网https://min.io/,下载 2.minio提供了在Linux下安装的两种方式:使用docker,直接使用minio。我这里选择直接使用minio(1)minio下载可以通过wg...

不知道怎么提高代码可扩展性?来看看优秀框架源码中的这几种设计模式吧!

为什么要提高代码扩展性 我们写的代码都是为了一定的需求服务的,但是这些需求并不是一成不变的,当需求变更了,如果我们代码的扩展性很好,我们可能只需要简单的添加或者删除模块就行了,如果扩展性不好,可能所有代码都需要重写,那就是一场灾难了,所以提高代码的扩展性是势在必行的。怎样才算有好的扩展性呢?好的扩展性应该具备以下特征: 需求变更时,代码不需要重写。 局部...

Java 基础之详解 Java IO

Java IO基本概念 Java IO:即Java输入/输出系统,区分Java的输入和输出:把自己当成程序, 当你从外边读数据到自己这里就用输入(InputStream/Reader), 向外边写数据就用输出(OutputStream/Writer)。 Stream:Java中将数据的输入输出抽象为流,流是一组有顺序的,单向的,有起点和终点的数据集合,就像...

Vue生态圈之----Axios学习笔记

API 首先,我们把axios所有的【API】和【配置】及【返回内容】列一下: //通过配置发送请求 axios(config) axios(url[,config]) //别名 axios.request(config); axios.get(url[,config]); axios.delete(url[,config]); axios.head(u...