vue 切换页面时,监听用户是不是修改过信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 切换页面时,监听用户是不是修改过信息相关的知识,希望对你有一定的参考价值。

参考技术A 最近实现的一个功能:
当用户切换页面时,监听当前已修改的数据是否保存。如果数据已保存,就直接跳转到另一个页面;如果没有保存,要有弹窗提示是否保存数据,所以我想到了导航守卫beforeRouteLeave

beforeRouteLeave之前有听过并未使用过,于是自己按照网上搜索的方法结合定时器写了一个小demo。废话不多数,大家先下看效果吧!

效果图:

1.首先定义一个变量count:

2.把beforeRouteLeave像写vue生命周期一样的写法写进来就好了,至于参数to,from是什么就给路由守卫一样的,感兴趣的话可以自己打印看一下呢
在requestData里面定义一个定时器的方法

附:
我在控制台打印的参数to和from

vue 获取页面详情后 切换页面时 如何监听用户是否修改过信息

可以用 beforeRouteLeave 和 updated 来判断。export default {

    name: supplier,
    components:{cmtWrap,cmtContent},
    props: [],
    beforeRouteLeave (to, from, next) {//离开当前页
      if(this.updateCount > 1){ //更新次数大于1 说明用户修改过当前页数据 因为获取详情时会更新一次
        if(from.path.includes(nowPath)){
          this.$confirm(即将离开当前页,请确定是否保存当前数据?, 离开当前页, {
            confirmButtonText: 保存,
            cancelButtonText: 不保存,
            type: warning
          }).then(() => {
            //...todo 这里调接口 保存数据
            next()
          }).catch(() => {next()});
        }else{next()}
      }else{
        next()
      }
    },
    updated:function () {
      this.updateCount = this.updateCount + 1
    },
    data() {
      return {
        updateCount:0,//判断用户是否更新当前数据
      }
    },
    computed:{},
    watch:{},
    mounted:function () {
    this.getInitData()
  }, methods: {
    getInitData:function(){
    //...todo  页面进来,先获取默认数据

    }

  },
  }

 







以上是关于vue 切换页面时,监听用户是不是修改过信息的主要内容,如果未能解决你的问题,请参考以下文章

vue 项目中通过监听 localStorage 的变化进行父子页面传参

vue 项目中通过监听 localStorage 的变化进行父子页面传参

vue 项目中通过监听 localStorage 的变化进行父子页面传参

vue 项目中通过监听 localStorage 的变化进行父子页面传参

如何在Angular项目里监听页面关闭、跳转事件?

vue禁止浏览器F5进行刷新和监听浏览器刷新事件