小程序的踩坑-持续更新-建议收藏

微信小程序的坑

  1. 小程序渲染层内核不一致导致某些 api 不可用

    数组的扁平化方法 Array.prototype.flat() 不支持
    解决: 重新定义此方法到数组对象的原型链上

  /**
  * 2019年8月16日
  * 给数组添加flat方法
  */
  addMethodToArray() {
    Array.prototype.flat = function(depth) {
      // let arr = this.value; //读不到
      let arr = this; //数组本身
      let res = [],
        depthArg = depth || 1,
        depthNum = 0,
        flatMap = arr => {
          arr.map((element, index, array) => {
            if (Object.prototype.toString.call(element).slice(8, -1) === 'Array') {
              if (depthNum < depthArg) {
                depthNum++;
                flatMap(element);
              } else {
                res.push(element);
              }
            } else {
              res.push(element);
              if (index === array.length - 1) depthNum = 0;
            }
          });
        };
      flatMap(arr);
      return res;
    };
  },

  1. 小程序 require 引入包的问题
    参考链接
    已知:有两个 js 包, atest.js 和 btest.js,在 atest.js 中用 require 引入 btest.js 时,因为 btest 还没有生成,此时引入的 btest 是个空对象
    解决:

  2. 微信小程序 从 A 跳到 B 页面, 在 B 页面可以使用 A 的方法,通过 wx.navigateBack()返回 A 页面
    问题: 从 A 页面通过 wx.navigateTo 跳到 B 页面后, B 做完操作后返回 A,并且 A 页面等着 B 的操作结果
    解决:

    //B页面的JS
      let pages = getCurrentPages();
      let prevPage = pages[pages.length - 2]; //获取到A页面
      prevPage.doItemSelect({ selectedClassIndex, selectedItemIndex, isInit: false }); //在B调用A的方法
    
  3. 小程序获取手机号第一次失败,第二次成功的问题

    参考链接

  4. 三分钟创建 GitHub 博客

  5. 小程序的根路径探究,是从 pages 开始的吗?

  6. 小程序中的setData()指定set对象

    this.setData({
    [‘timePickerColumns[’+1+’]’]: timeArr
    });

  7. 小程序跨页面调用this

      loading.show.call(app.globalData.currPage); //获取当前页面的this
      this === app.globalData.currPage;
    

你可能感兴趣的:(小程序,博客,小程序,javascript)