<template>
<view v-show="hasNewVersion">
<button @click="updateMyApp()">升级</button>
</view>
</template>
<script>
export default {
data() {
return {
hasNewVersion: false
}
},
onLoad() {
this.checkMyAppNewVersion();
},
methods: {
checkMyAppNewVersion() {
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function(res) {
this.hasNewVersion = res.hasUpdate;
console.log(this.hasNewVersion);
});
},
updateMyApp() {
const updateManager = uni.getUpdateManager();
updateManager.onUpdateReady(function(res) {
uni.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success(res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
}
})
})
},
}
}
</script>
<style>
</style>
对于这个简单页面,我已经在微信小程序后台设置了优先使用本地版本,待用户愿意以后点击升级按钮后再将最新版本更新到本地。现在的问题是,使用微信开发者工具在模拟更新编译后,虽然v-show绑定了hasNewVersion,并且代码中console.log中也打印出true了,但是这个按钮却没有显示出来。我想问一下是不是v-show的绑定失效了啊?
2 个回复
g***@sina.com (作者)
我知道问题是啥了,checkMyAppNewVersion里的函数是普通函数,不是回调函数,这导致里面的this指的不是vue组件,而是这个函数,修改方法也很简单,把这里面的函数修改为回调函数就可以用了。感谢万能的GPT。
Diligent_UI - 【插件开发】【专治疑难杂症】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=193663(微信搜索飘逸科技UI小程序直接体验)】【骗子请绕道】问题咨询请加QQ群:120594820,代表作灵感实用工具小程序
牛啊