0%

微信小程序的那些坑

一些关于做微信小程序时遇到的问题及一些小技巧

顺便再次吐槽一下, 官方文档写得太烂了

Toast 现已更改为 showToast

1
2
3
4
5
wx.showToast({
title: '内容',
icon: '提示图标',
duration: 保持时间, 单位为毫秒
})

js 中动态更改组件属性

  1. 组件要动态变化的属性设置一个别名
  2. 在 js 文件中的 data 里新建一个变量, 与别名一样的名字
  3. 在函数中动态更改
1
<button bindtap="confirmSub" loading="{{loading}}">确认</button>
1
2
3
4
5
6
7
8
data:{
loading: false,
},
confirmSub: function(e){
this.setData({
loading: !this.data.loading,
}),
}

监听器里调用上一级变量

在监听器或定时器里使用的参数变量定义时必须加 const 关键字

this 转换为 that, 用来访问上一级的变量

1
2
3
4
5
6
7
8
9
10
11
testListener: function(e){
const that = this;
that.setData({
console.log(e);
});
setTimeout(function(){
that.setData({
testConst: !that.data.testConst,
})
})
}

输入框剔除无效字符

1
2
3
4
5
6
7
8
9
10
11
function removeSpecialChar(s) {
var pattern = /[0-9]{1}/; // 除了0-9其余全部剔除
var rs = "";
for(var i = 0; i < s.length; i++){
var single = s.substr(i,1);
if(single.match(pattern)){
rs = rs+single;
}
}
return rs;
}

点击按钮后获取输入框内容

一种是把输入框和按钮放在一个表格即

中, 然后输入框设置别名, 表格绑定事件, 在事件回调函数中通过别名获取输入框内容

另一种是每个输入框都绑定事件, 同时为每个输入框设一个变量来实时接收输入框的文字, 再在按钮的事件中通过变量来间接读取

模板引用

  1. 先建立模板: xxx.wxml
  2. 在要使用这个模板的页面引用模板: <import src=”../../xxx.wxml> 并在该页面使用模板