为了账号安全,请及时绑定邮箱和手机立即绑定

为什么vue中无法这样对新老变量做比较

为什么vue中无法这样对新老变量做比较

饮歌长啸 2019-03-20 17:13:10
在一个interval定时器里面执行一个getAll方法,这个getAll方法会使用axios循环读取某个接口,一旦那个接口数据有变动,就会将新数据写入vue.count中,我现在想实现的是一旦检测到这个vue.count有变化就alert弹框并且audio标签播放声音,但是我发现这样做并没有效果,原因是什么呢?为什么old和new始终是一样的?
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

watch你值得拥有


查看完整回答
反对 回复 2019-03-28
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

因为你vue.old=vue.count这两个始终相等,你后续又用他们做比较,这种场景你可以使用watch实现,或者

先不赋值


if(vue.count===vue.old){

    数据无变化

}else{

    alert('new message')

}


查看完整回答
反对 回复 2019-03-28
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

你可以参照这样的写法


    new Vue({

        el: "#app",

        data() {

            return {

                count: ''

            }

        },

        methods: {

            getAll() {

                return new Promise((resolve, reject) => {

                    axios.get('../json/menu.json').then(res => {

                        resolve(res.data)

                    })

                })

            }

        },

        watch: {

            count: function () {

                alert('数据发生变化')

            }

        },

        mounted() {

            let that = this;

            setInterval(async () => {

                that.count = await that.getAll()

            }, 5000);

        }

    })

使用watch来监听count


查看完整回答
反对 回复 2019-03-28
  • 3 回答
  • 0 关注
  • 825 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号