• 小程序--爬坑


    1.使用 wx.startPullDownRefresh()下拉刷新无效:

    “enablePullDownRefresh”: “true” 在 Page 中定义 onPullDownRefresh 处理函数,监听该页面用户下拉刷新事件。 需要在 config 的window选项中开启 enablePullDownRefresh。

    当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。

    2.数据监听器无效:

    数据监听器可以用于监听和响应任何属性和数据字段的变化,从而执行特定的操作。作用类似于vue中的watch。数据监听器从小程序基础路版本2.6.1开始支持

    解决:

    因为我的基础库版本是2.0.1 所有数据监听失败

    在详情-本地设置-调试基础库 修改版本号就可以了

    格式如下:

    1 - 基本使用方法

    数据监听器可以用于监听和响应任何属性和数据字段的变化,从而执行特定的操作

    数据监听详细文档

    observers: {
     'propPrice, num': function (newPropPrice, newNum) {
       console.log(newPropPrice)
       console.log(newNum)
    }
    },

     

    2 - 监听子数据字段语法
    • 案例代码

    // 监控某个子数据的代码
    Component({
     observers: {
       'some.subfield': function (subfield) {
         // 使用 setData 设置 this.data.some.subfield 时触发
         // (除此以外,使用 setData 设置 this.data.some 也会触发)
      },
       'arr[12]': function (arr12) {
         // 使用 setData 设置 this.data.arr[12] 时触发
         // (除此以外,使用 setData 设置 this.data.arr 也会触发)
      }
    }
    })
    // 使用通配符 ** 监听所有子数据字段的变化
    Component({
     observers: {
       'some.field.**': function (field) {
         // 使用 setData 设置 this.data.some.field 本身或其下任何子数据字段时触发
         // (除此以外,使用 setData 设置 this.data.some 也会触发)
         field === this.data.some.field
      }
    }
    })

    3.VM144:1 request:fail url not in domain list

    可能原因:

    • 域名未完成备案

    • url里有端口(可以有端口存在)

    • 报错提示说请求的url不在域名列表里,应该是还没有配置服务器域名,可点击开发者工具右上角 详情-域名信息,看看是否配置了域名;

      解决:详情->项目设置->不校验合法域名

    4. 无法获取UnionID的问题

    • login获取UID必须满足两个条件: 1、把小程序和公众号都绑定在开放平台; 2、用户必须已经关注公众号。

    • 用wx.getUserInfo获取满足一个条件:把小程序和公众号都绑定在开放平台;

    5. wx.getSystemInfoSync获取windowHeight不准确

    主要原因在于获取是时机,wx.getSystemInfoSync是在页面初始化的时候就计算了,基本上可以理解为是屏幕高度。所以,最好的方法是使用异步接口,并且在onReady函数中调用。

    onReady() {
     wx.getSystemInfo({
       success({windowHeight}) {
         // todo
      }
    });
    }

    6. 图片本地资源名称,尽量使用小写命名

    在解决iPhone X适配时,底部多余部分使用图片时

    <image class='iphonexImg' src="/imgs/iphoneBGT.png" mode="aspectFill">image>

    路径是 src='imgs/iphoneBGT.png'

    发现在pc IDE上面可以显示出来,但是真机调试时,图片找不到,

    然后将图片名称改为iphonex.png真机调试就可以了

    <image class='iphonexImg' src="/imgs/iphonex.png" mode="aspectFill">image>

    封装代码:wechat.js

     

    /**

    • Promise化小程序接口 */ class Wechat { /**

      • 登陆

      • @return {Promise} */ static login() { return new Promise((resolve, reject) => wx.login({ success: resolve, fail: reject })); };

    /**

    • 获取用户信息

    • @return {Promise} */ static getUserInfo() {

    return new Promise((resolve, reject) => wx.getUserInfo({ success: resolve, fail: reject }));

    };

    };

    module.exports = Wechat; 调用代码:

     

     

    let wechat = require('./wechat.js'); wechat.login() .then(d => { console.log("登陆", d); return wechat.getUserInfo(); }) .then(d => { console.log("获取用户信息", d); }) .catch(e => { console.log(e); }) 结果

     

    如果需要传递参数,比如设置本地数据缓存接口:

     

    static setStorage(key, value) { return new Promise((resolve, reject) => wx.setStorage({ key: key, data: value, success: resolve, fail: reject }));

     

    7.原生:微信小程序使用POST方法请求的问题

    解决方案:wx.request()使用post方法请求时,还需要加上header,header[content-type]值为application/x-www-form-urlencoded,否则请求返回失败。

    8.wepy框架:小程序发布之后,需要点两次才会更新

    比如项目中:轮播图,登录功能wx.login()获取code值,搜索功能等等

    解决方案:异步操作需添加:this.$apply()

    9.比较旧的项目迁移到小程序,获取到富文本。微信小程序解析不了

    比如项目中:商品详情页面

    解决方案:引入插件wxParse.js ,js文件中 require引入,

    var WxParse = require('../wxParse/wxParse.js') 组件中添加

    <import src="../wxParse/wxParse.wxml" />

    <template is="wxParse" data="{{wxParseData:article.nodes}}" />

     

     

  • 相关阅读:
    PSP编程
    题库软件1.0发布
    ubuntu上安装netgear wg511v2驱动
    boost的编译
    Plot3D 0.3发布
    立体画板Plot3D
    求教团队内的朋友,在directx中,如何画虚线?
    OpenGL如何显示文本?
    JZ028数组中出现次数超过一半的数字
    JZ027字符串的排列
  • 原文地址:https://www.cnblogs.com/angel648/p/11364424.html
Copyright © 2020-2023  润新知