美文网首页
微信小程序 扫码 加载图片

微信小程序 扫码 加载图片

作者: HeJD | 来源:发表于2018-04-19 15:33 被阅读0次

    官方示例

    index.wxml

    <view class="page">
        <image style="width: 750rpx; height: 1000rpx; background-color: #ffffff;"  src="{{src}}"></image>
    </view>
    

    750rpx:小程序定义的宽度

    index.js

    var imgPath=''
    Page({
      data: {
        src: imgPath
      }
    })
    

    在Page()外可以定义变量,此处需要注意,若Page中有多个data,以最后一个data为准

    页面

    页面组成:提示信息+扫码按钮+图片

    index.wxml

    <view>
      <text>扫码查看二维码内容</text>
      <button>请扫描二维码</button>
    </view>
    
    <view class="page">
      <image style="width: 750rpx; height: 1000rpx; background-color: #ffffff;" src="{{src}}"></image>
    </view>
    

    页面展示如下


    这里写图片描述

    红框处是有一个image的空间,只是颜色设置为白色
    src接收到Page中data的src的值'',在代码中,使用的是rpx的单位,此处自动转为px

    调用扫码

    index.js

    var imgPath=''
    Page({
      scanningCode:function(event){
        wx.scanCode({
          success: (res) => {
            console.log(res)
          },
          fail: (res) => {
            console.log(res)
          },
          complete: (res) => {
            console.log(res)
          }
        })
      },
      /**
       * 页面的初始数据
       */
      data: {
        src: imgPath
      }
    })
    

    给button加上点击方法
    index.wxml

    <button bindtap="scanningCode">请扫描二维码</button>
    

    至此,就能够点击button,打开扫码,然后读出扫码信息。
    注意 :
    1、此次要有AppId才能扫出结果,否则会提示错误
    2、外链接需要先在开发者平台配置,且要使用https协议

    获取扫码结果

    扫码后,结果如下

    console

    Object {errMsg: "scanCode:ok", result: "https://xxxxxx", scanType: "QR_CODE", path: "", charSet: "UTF-8"}
    

    真正的结果存在result中

    更换图片地址

    index.js

    scanningCode:function(event){
        wx.scanCode({
          success: (res) => {
            console.log(res)
            this.setData({
              src: res.result
            })
          }
        })
      }
    }
    

    至此,当扫码得到二维码中图片地址时,就可以在image中显示图片

    加入loading

    由于访问的是外链接,不可避免的存在延迟,优化用户体验,在加载图片时,加入loading遮罩层

    index.js

    scanningCode:function(event){
        wx.scanCode({
          success: (res) => {
            console.log(res)
            this.setData({
              src: res.result
            }),
            wx.showLoading({
              title:'正在加载',
              mask:true
            })
          }
        })
      }
    

    加入遮罩层后,希望在图片加载完的时候,遮罩层就隐藏掉
    加入loading,效果如下


    这里写图片描述

    遮罩层隐藏

    wx.hideLoading()
    

    图片加载完成事件

    <image bindload="hideLoading"></image>
    

    结合

    index.wxml

    <view>
      <text>扫码查看二维码内容</text>
      <button>请扫描二维码</button>
    </view>
    
    <view class="page">
      <image style="width: 750rpx; height: 1000rpx; background-color: #ffffff;" src="{{src}}" bindload="hideLoading"></image>
    </view>
    

    index.js

    Page({
        hideLoading:function(event){
            wx.hideLoading()
        },
        ...
    })
    

    至此,图片加载时,有loading提示,加载完成后,loading提示消失

    图片加载完成后隐藏提示信息和按钮

    在view中加入hidden

    <view hidden="{{scanHidden ? true : false}}">
      <text>扫码查看二维码内容</text>
      <button bindtap="scanningCode">请扫描二维码</button>
    </view>
    

    初始化view是否隐藏

    var imgPath=''
    var hiddenView=false
    Page({
        data: {
            src: imgPath,
            scanHidden:hiddenView
        },
        ...
    })
    

    当图片加载完成,隐藏view

    Page({
        hideLoading:function(event){
            wx.hideLoading()
            this.setData({
              scanHidden:true
            })
        }
    })
    

    相关文章

      网友评论

          本文标题:微信小程序 扫码 加载图片

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