小程序需要从书籍选择后跳转到lessons的标签页:
toNextLevel(pth_book) {
let globalData = getApp().globalData
//转到课程页面
let book_idx = parseInt(pth_book.index) - 1
globalData.book_idx = book_idx
globalData.$switchBook = true
console.log('转到课程页面')
uni.switchTab({
url:"../lessons/lessons"
})
},
但直接这样做的话目标页面lesson中数据并不会更新,所以添加了一个全局变量$switchBook来控制,即上句中的:
globalData.$switchBook = true
添加全局变量的办法我使用的是官方推荐的globalData, 参考:https://ask.dcloud.net.cn/article/35021
使用globalData添加全局变量
globalData是一种比较简单的全局变量使用方式。
定义:App.vue
<script>
export default {
globalData: {
text: 'text'
},
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style>
/*每个页面公共css */
</style>
js中操作globalData的方式如下:
赋值:getApp().globalData.text = 'test'
取值:console.log(getApp().globalData.text) // 'test'
我的globalData
$switchBook默认设置为false
export default {
globalData: {
//是否切换书籍
$switchBook: false,
onShow中更新数据
这样就可以在lessons.vue的onShow方法中做如下判断进行页面的数据更新,注意更新完后$switchBook要设置为false。
页面lessons.vue
onShow() { //books中切换书籍的时候会引起本页面刷新
let globalData = getApp().globalData
if(globalData.$switchBook){
this.getUserConfig()
globalData.$switchBook = false
}
},