2***@qq.com
2***@qq.com
  • 发布:2023-04-03 14:10
  • 更新:2023-04-03 14:10
  • 阅读:239

watch中的监听无效

分类:uni-app

大佬们,下午好!我遇到一个无法解决的问题,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的值呢?

2023-04-03 14:10 负责人:无 分享
已邀请:

要回复问题请先登录注册