1.wx:if 与 hidden
wx:if 与 hidden 都可以控制微信小程序中元素的显示与否。 他们的区别
- wx:if 是遇 true 显示, 在隐藏的时候不渲染,
- hidden 是遇 false 显示,在隐藏时仍然渲染,只是不呈现
<view hidden="{{dialogue === true}}">
文字聊天
</view>
<view hidden="{{dialogue === false}}">
语音聊天
</view>
因为 wx:if 之中的模板也可能包含数据绑定,所以当 wx:if 的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。
同时 wx:if 也是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。
相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。
2.微信小程序禁止page页面上下滑动
在单页面设置disableScroll为true即可; 则页面整体不能上下滚动。只在页面配置中有效,无法在 app.json 中设置
{ "disableScroll": true}
微信小程序中禁止当前页面的上下滑动处理 在微信小程序中定义了一个半透明遮罩层,上面显示提示的文字; 但是这是一个长页面,遮罩出现的时候,页面依然可以上下滑动; 为了在遮罩出现的时候禁止用户滑动页面,如下处理:
<view catchtouchmove="preventTouchMove">
我是遮罩层
</view>
function preventTouchMove(){
console.log('啥也不干就行,空函数');
}
3.微信小程序:封装全局的promise异步调用方法
链接: www.cnblogs.com/momozjm/p/8…
一:封装 function POST(url, params) { let promise = new Promise(function (resolve, reject) { wx.request({ url: url, data: params, method: 'POST', success: function (res) { resolve(res.data); } }) }); return promise } 二:调用 const network = require('../../utils/util.js') network.GET(url, params).then((res) => { //请求成功的操作 console.log(res) });
4、监听是否断网
(1).在app.js的onLaunch中添加如下方法:
App({
onLaunch: function () {
var that = this;
wx.onNetworkStatusChange(function (res) {
if (res.networkType == 'none') {
that.globalData.nonetwork = true;
} else {
that.globalData.nonetwork = false;
}
})
},
globalData: {
nonetwork: false,
}
})
(2).在index.wxml页面监听当前网络状态 .js
var app = getApp();
page({
data: {
nonetwork: false,
},
onShow: function () {
var that = this;
that.setData({
nonetwork: app.globalData.nonetwork,
})
},
})
.wxml
<block wx: if= "{{nonetwork}}">
<view>当前网络不可用,请检查您的网络</view>
</block >
api文档: developers.weixin.qq.com/miniprogram…
4.微信小程序:消息提醒音播放
链接: www.jianshu.com/p/c918e006c…
const innerAudioContext = wx.createInnerAudioContext(); //新建一个createInnerAudioContext();
innerAudioContext.autoplay = true; //音频自动播放设置
innerAudioContext.src = '/audio/notice.mp3'; //链接到音频的地址
innerAudioContext.onPlay(() => {}); //播放音效
innerAudioContext.onError((res) => { //打印错误
console.log(res.errMsg); //错误信息
console.log(res.errCode); //错误码