zoukankan      html  css  js  c++  java
  • 微信小程序FAQ

    1. 图片名注意大小写. 不然本地预览是可以看到的.上传后用手机就看不到了.

    2. bindtap等事件传参

    wxml
    
    <view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
    
    JS
    
    Page({
      tapName: function(event) {
        console.log(event)
      }
    })
    
    event 打印结果
    
    {
    "type":"tap",
    "timeStamp":895,
    /////////////////////////////////
    "target": {
      "id": "tapTest",
      "dataset":  {
        "hi":"WeChat"
      }
    },
    "currentTarget":  {
      "id": "tapTest",
      "dataset": {
        "hi":"WeChat"
      }
    },
    ///////////////////////////////
    "detail": {
      "x":53,
      "y":14
    },
    "touches":[{
      "identifier":0,
      "pageX":53,
      "pageY":14,
      "clientX":53,
      "clientY":14
    }],
    "changedTouches":[{
      "identifier":0,
      "pageX":53,
      "pageY":14,
      "clientX":53,
      "clientY":14
    }]
    }
    
    注意两点:
    1、data-名称 不能有大写字母,如果需要,可以通过 - (中划线)来连接单词,编译的时候小程序会将第二个单词首字母自动大写。图中代码是为了自己标志,所以第二个单词的首字母大写了,其实可以不用。data-* 属性中不可以存放对象。
    
    2、注意打印结果中target和currentTarget的区别。
    
    target 触发事件的源组件。 
    currentTarget 事件绑定的当前组件。
    
    如果你在父容器上绑定了事件并传参,当你点击父容器时,事件绑定的组件和触发事件的源组件是同一个元素,所以currentTarget 、target 都可以拿到参数,但是当你点击子元素时,target 就不是事件绑定的组件了,所以拿不到参数。 
    由于事件冒泡的机制,父容器上绑定的事件依然可以触发,所以currentTarget 依然可以拿到参数。


    3. 微信小程序 之 tabBar 和 navigator 一起使用 的问题


    当注册了tabBar的时候,使用navigator时会发现不能跳转,这个时候需要在navigator上加上open-type='switchTab' 属性;  当未注册tabBar的时候,navigator可正常使用,默认即可。

    <navigator url='../about/about' open-type='switchTab' >
          <image   data-url='about' class='album' src="/images/about.png"  mode="cover"></image>
    </navigator>

     //事件处理函数

    bindViewTap: function(event)
        var url = '../' + event.currentTarget.dataset.url + '/'+event.currentTarget.dataset.url
    
        if (event.currentTarget.dataset.url=="about")
          wx.switchTab({
            url: url,
          })
        else
          wx.navigateTo({
            url: url
          })

     4. html/css 转成wxml和wxss注意点:

    wxss里不能用url(本地图片)
    
    你可以用 http://imgbase64.duoshitong.com/ 转成base64,
    
    background-image: url("data:image/png;base64,iVBORw0KGgo=...");

    <h3> 这样的标签和wxml不兼容,可以改成<b>, 在wxss修改样式

    <li> 在循环里不兼容, 可以改成<view class="li">, 在wxss修改样式

    5. button 去掉border: 使用after属性

    /*使用 button::after{ border: none; } 来去除边框*/
    .free-btn-bordernone{
      background: none !important;
      color: #000 !important;
    }
    .free-btn-bordernone::after{
      border: none;
    }

     6. 小程序AES解密C#

            public string AES_decrypt(string encryptedDataStr, string key, string iv)
            {
                RijndaelManaged rijalg = new RijndaelManaged();
                //-----------------    
                //设置 cipher 格式 AES-128-CBC    
    
                rijalg.KeySize = 128;
    
                rijalg.Padding = PaddingMode.PKCS7;
                rijalg.Mode = CipherMode.CBC;
    
                rijalg.Key = Convert.FromBase64String(key);
                rijalg.IV = Convert.FromBase64String(iv);
    
    
                byte[] encryptedData = Convert.FromBase64String(encryptedDataStr);
                //解密    
                ICryptoTransform decryptor = rijalg.CreateDecryptor(rijalg.Key, rijalg.IV);
    
                string result="";
    
                using (MemoryStream msDecrypt = new MemoryStream(encryptedData))
                {
                    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                    {
                        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                        {
                            result = srDecrypt.ReadToEnd();
                        }
                    }
                }
                return result;
            }

    7. 微信小程序开发之webview组件内网页实现微信原生支付

    https://zhuanlan.zhihu.com/p/32732356   

    https://blog.csdn.net/blankshsh/article/details/79161751

    8. button 按钮样式

    <view class="btnbox" hover-class="btnbox_hover">
        <button class="btn" bindtap="btnClick"></button>
        <view class="text">确定</view>
    </view>
    .btnbox {
      width: 250rpx;
      height: 80rpx;
      border-radius: 8rpx;
      position: relative;
      overflow: hidden;
      background: #ffb80d;
      color: #fff;
      font-size: 36rpx;
      display: flex;
      justify-content: center;
      align-items: center;
    }
     
    .btnbox .btn {
      position: absolute;
      width: 100%;
      height: 100%;
      margin:0;
      padding: 0;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      border: 0;
      opacity: 0;
      background: transparent;
      z-index: 9;
    }
     
    .btnbox .text {
      display: block;
      line-height: 1.5;
      text-align: center;
    }
     
    .btnbox_hover {
      background: #e6a301
    }

    9. 小程序GPS定位: 

    https://blog.csdn.net/blankshsh/article/details/78193174

    10. 小程序图片上传

     https://blog.csdn.net/blankshsh/article/details/79161976

    11.  swiper 图片不显示: 是因为你放在.container里面. 不能用flex布局

    /**app.wxss**/
    .container {
      height: 100%;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: space-between;
      padding: 0rpx 0;
      box-sizing: border-box;
      background-color: #f4f2ed;
    } 

     12.  修改小程序背景,TabBar颜色,

    app.wxss

    page {
      line-height: 1.6;
      font-family: -apple-system-font, "Helvetica Neue", sans-serif,微软雅黑;
      font-size:14px;
      background-color: #fdd35a;
      background:-webkit-gradient(linear, 0% 0%, 0% 100%,from(rgba(253,211,90,1)), to(rgb(248, 243, 243)));
      background: url('http://www.xxx.cn/images/oscar.png') no-repeat;
      background-size: 100% 100%;
    }

    app.json

    "window": {
        "backgroundTextStyle": "light",    
        "navigationBarBackgroundColor": "#fdd35a",
        "navigationBarTitleText": "格之律",
        "navigationBarTextStyle": "black"
      },
      "tabBar": {
        "color": "#d7ced5",
        "selectedColor": "#fdd35a",
        "borderStyle": "white",
        "backgroundColor": "#150d02",
        "list": [
          {
            "pagePath": "pages/index/index",
            "text": "首页",
            "iconPath": "images/home.png",
            "selectedIconPath": "images/home_active.png"
          },
          {
            "pagePath": "pages/personal/personal",
            "text": "我的",
            "iconPath": "images/my.png",
            "selectedIconPath": "images/my_active.png"
          }
        ]
      }

     动态控制某个view显示或隐藏

    <div class="js-tabber-container goods-detail">
      <div class="js-tabber tabber  clearfix ">
        <button bindtap="onChangeShowState" data-type="goods" class="{{showView?'active':''}}">
          商品详情 </button>
        <button bindtap="onChangeShowState" data-type="reviews" class="{{showView?'':'active'}}">
          评论 </button>
      </div>
    
      <div class="js-tabber-content">
        <div class="js-part {{showView?'':'hide'}}" data-type="goods">
          <template is="wxParse" data="{{wxParseData:article.nodes}}" />
        </div>
        <div class="js-part {{showView?'hide':''}}" data-type="reviews">
           <block wx:for="{{product.reviews}}" wx:key="{{id}}">
           <text>
            {{item.title}}</text>
            <text>
            {{item.reviewText}}
           </text>
            
           </block>
        </div>
      </div>
    </div>
      onChangeShowState: function () {
        var that = this;
        that.setData({
          showView: (!that.data.showView)
        })
      },

    公众号菜单跳转到小程序, 需要先到公众号后台绑定小程序之后, 如果是开发者模式,则这样写

    {
                "type": "miniprogram",
                "name": "装修有范",
                "url": "http://www.163.com/wx/test",
                "appid": "wx405b7147dd6291df",
                "pagepath": "pages/home/home?forumCode=5eo9bd97f9"
                "sub_button": []
            }

     如果没有绑定,则会提示这个错误: {"errcode":85005,"errmsg":"appid not bind weapp hint: [ifgeuA08321976]"}

    invokeWebviewMethod 数据传输长度为 2423164 已经超过最大长度 1048576

    json返回的数据太多了

    小程序webview要打开公众号图文信息时,仅支持打开该小程序关联公众号的图文信息

    net core web api 的后台的post方法取不到前台小程序传来的参数

    --- 要改后台,采用[FromBody], 不然你只能用url上拼接QueryString的方法

            [HttpPost]
            public dynamic Post([FromBody]dynamic obj)
            {
                string email = obj.email;
                string firstName = obj.firstName;
                string lastName = obj.lastName;
            }    

    前台小程序代码

     wx.request({
          url: app.globalData.serverAddress + '/api/customers',
          method: 'post',
          header: { "Content-Type": "application/json" },
          data: { email: email, phone: mobile, openId: app.globalData.openid },
          success: function(res) {}
    })

    小程序前台对后端api接口返回的json数据进行加工,比如datetime格式化,增加字段,数组排序

    // 变换Json格式显示
    for (var i = 0; i < shipments[0].shipmentLogistics.length; i++)
        shipments[0].shipmentLogistics[i].processTime = util.formatISODateTime(shipments[0].shipmentLogistics[i].processTime);
    
    //2018-11-28T14:36:57.8837891
    function formatISODateTime(time){
      if (time != null) {
        return time.replace("T"," ").substring(0,19)
      }
      return "";
    }
      //动态添加字段
      getOrderStatus: function(orderList) {
        var ss = []
        for (var i = 0; i < orderList.length; i++) {
          if (orderList[i].paymentStatusId == '10')
            orderList[i].orderStatus = '未支付'
          if (orderList[i].paymentStatusId == '30')
            orderList[i].orderStatus = '已支付'   
        }
        return orderList
    
      }
             
         //按id倒序 shipmentLogistics.sort(function (a, b) { return b.id - a.id })
  • 相关阅读:
    PHP 数据类型
    PHP SAPI
    PHP 基础架构
    PHP7的变化
    mysql 选择优化的数据类型需要注意的几点
    彻底删除在github上提交的文件
    php7 新特性
    php缓冲区 一些笔记
    设计模式 一些概念
    mysql性能优化其中一部分小结
  • 原文地址:https://www.cnblogs.com/zitjubiz/p/9373449.html
Copyright © 2011-2022 走看看