大佬们,下午好!我遇到一个无法解决的问题,curLonlat是存储在globalData中的全局变量,在A页面中通过
_self.curLonlat = {
"lon": lon,
"lat": lat,
"time": new Date()
};
_self.$set(getApp().globalData, 'curLonlat', _self.curLonlat);
来设置curLonlat的值,并且每过一秒lon和lat就会自增1
在这个B.vue中,通过setInterval每隔一秒输出的_self.getGlobalData.curLonlat.time是有变化的,但是却无法触发watch中'getGlobalData.curLonlat.time'的监听
<template>
<view>
<text>{{time}}</text>
</view>
</template>
<script>
export default {
data() {
return {
lon: null,
lat: null,
time: null,
saveTimer: null,
}
},
onReady() {},
computed: {
getGlobalData() {
return getApp().globalData;
},
},
watch: {
'getGlobalData.curLonlat.time': {
handler(val) {
console.log("time变化后的新值", val)
this.time = val;
},
deep: true, // 开启深度观察
},
},
mounted() {
const _self = this
if (_self.saveTimer == null) {
_self.saveTimer = setInterval(function() {
console.log('getGlobalData.curLonlat.time', _self.getGlobalData.curLonlat.time)
}, 1000);
}
},
methods: {},
onUnload() {
const _self = this;
console.log("onUnload中的监听器", _self.saveTimer)
if (_self.saveTimer != null) {
clearInterval(_self.saveTimer);
_self.saveTimer = null;
}
},
}
</script>
<style lang="scss">
</style>
请问有大佬知道是为什么嘛?我应该怎么写才能在B页面实时获取到这个curLonlat的值呢?
0 个回复