小程序常见的一些坑

  1. dom中绑定的data-属性会将大写转为小写,在js中获取时postId会变为postid。
<view data-postId>

var postId = event.currentTarget.dataset.postid
  1. wx.showActionSheet 可以调起底部菜单

  2. 小程序快速对齐样式 Alt + shift + f 快速对齐样式, command+p, command+e

  3. css引入

@import "template.wxss"
  1. 向template中传入数据时,加入三个小点代表将对象展开,这样html中套数据时就不需要再加item.
<template is="postItem" data="{{...item}}" />
  1. 定义,修改全局变量
// app.js
globalData: {
    todo: []
}
// 修改:
app.globalData.todo = []
  1. onLaunch只执行一次,onHide是小程序切换到后台运行时被调用,当从后台到前台时onShow会被调用,但onLaunch不会被调用,ui操作在onReady(页面渲染完成后)中执行

  2. 下拉刷新

"enablePullDownRefresh": true

// 下拉触发函数
onPullDownRefresh: function(e) {}
  1. 小程序使用echarts
    下载:https://github.com/ecomfe/echarts-for-weixin

拷贝ec-canvas目录到自己项目目录中,在需要引入图表的页面的json文件中加如下:

{
  "usingComponents": {
    "ec-canvas": "../../ec-canvas/ec-canvas"
  }
}

这一配置的作用是,允许ECharts在pages/bar/index.wxml中使用组件。注意路径的相对位置要写对,如果目录结构和本例相同,就应该像上面这样配置。index.wxm中,ECharts创建了一个组件,内容如下:

<view class="container">
  <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>

index.js配置如下:

function initChart(canvas, width, height) {
  const chart = echarts.init(canvas, null, {
    width: width,
    height: height
  });
  canvas.setChart(chart);

  var option = {
    ...
  };
  chart.setOption(option);
  return chart;
}

Page({
  data: {
    ec: {
      onInit: initChart
    }
  }
});

这对于所有 ECharts 图表都是通用的,用户只需要修改上面 option 的内容,即可改变图表。option的使用方法参见ECharts配置项文档。对于不熟悉ECharts的用户,可以参见5分钟ECharts上手教程。

  1. 小程序使用E charts的一些坑
    10.1 百分比小于多少时不显示该百分比 可参考如下文章:https://segmentfault.com/q/1010000008096322
var val1 = 100;
var val2 = 100;
var val3 = 100;
....................
data: [
    {
        value: val1,
        name: '<50',
        label: {
            show: function () {
                if (val1 == 0) {
                    return false;
                } else {
                    return true;
                }
            }(),
            formatter: '{d}%',
            position: 'inside'
        },
        labelLine: {
            show: false
        },
        itemStyle: {
            color: '#00FFFF'
        }
    },
    {
        value: val2,
        name: '>=50  <100',
        label: {
            show: function () {
                if (val2 == 0) {
                    return false;
                } else {
                    return true;
                }
            }(),
            formatter: '{d}%',
            position: 'inside'
        },
        labelLine: {
            show: false
        },
        itemStyle: {
            color: '#0000FF'
        }
    },
    {
        value: val3,
        name: '>=100',
        label: {
            show: function () {
                if (val3 == 0) {
                    return false;
                } else {
                    return true;
                }
            }(),
            formatter: '{d}%',
            position: 'inside'
        },
        labelLine: {
            show: false
        },
        itemStyle: {
            color: '#9900FF'
        }
    }
]

10.2 百分比显示几位
https://blog.csdn.net/qq_38439885/article/details/79919912
https://tieba.baidu.com/p/5042843536?red_tag=2124378091

label : {
    show:true ,
    formatter:function(data){
         return data.percent.toFixed(1)+"%"
    }
},

10.3 异步加载数据
https://blog.csdn.net/hao_0420/article/details/80931339
https://blog.csdn.net/weixin_42416141/article/details/81028876

  1. 小程序scroll-y一些坑
    scroll-y无论为true或false都无效,都会滚动。但是设置scroll-y="{{hasMask}}” 有效

  2. 微信小程序滚动穿透,将position设为fixed

  3. iOS的scroll-view不触发bindscrolltolower事件问题 用绝对定位解决

page {
    width: 100%;
    min-height: 100%;
    position: relative;
}
 
scroll-view {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    opacity: 0;
}
  1. 绝对路径:最前面加 /

  2. 如果不给图片设置宽高,小程序默认宽高为300px,200px

  3. 字体大小可以用px,border也可以用px

  4. 选择器连写可以少起一些class名字,但不能复用,比较斟酌使用

  5. iOS默认字体 苹方,安卓默认字体 思源

  6. 小程序只能继承fontsize, color

  7. line-height可以消除文字间距

  8. bind:tap 最好加上冒号。bind不阻止冒泡,catch阻止冒泡

  9. 布尔类型默认值为false,number默认值为0

  10. 可以在模版字符串中使用函数,如下:

console.log(`${this.test()}123`)
  1. Promise是一个对象,不是函数

  2. 当函数有多项值,可以以对象形式传参,可以在函数外加个大括号(对象解构赋值)

  3. 获取text组件文本值:e.detail.text

  4. 触底事件只能在页面使用,不能再组件使用 onReachBottom

  5. 如果页面没有绑定data值,直接this.data改变值就行,如果绑定了的值,需要setData一下

  6. open-data可以直接获取用户部分信息

  7. 想跳转到另一个小程序必须关联同一个公众号

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,331评论 1 45
  • 1.小程序起步 (1)点击https://mp.weixin.qq.com/wxopen/waregister?a...
    GXW_Lyon阅读 8,773评论 0 0
  • 因新工作主要负责微信小程序这一块,最近的重心就移到这一块,该博客是对微信小程序整体的整理归纳以及标明一些细节点,初...
    majun00阅读 12,165评论 0 9
  • 那首你最喜欢的歌 只有几种腔调 想你的时候再听 还是有一千种情愫 蜷缩的风暴 变得如此安静 爱你的世界 千路是虹亮...
    安生5050阅读 3,146评论 2 5
  • 最近我的文章被其他公号平台发布后,关注的朋友也多了起来,一天一个朋友好奇的微信上来问我,如下: Q:平时你都正常上...
    爬行者慕青阅读 8,289评论 17 53

友情链接更多精彩内容