当前位置:   article > 正文

vue中如何拦截阻断element-ui tab组件切换_vue中不想让该控件有tab顺

vue中不想让该控件有tab顺

首先我们来看下element-ui  tab组件中的描述

那么就是说在before-leave这个回调函数触发之后,必须给这个方法一个返回值,返回false则会阻止tab页面跳转,否则发生跳转

我的业务场景:用户切换到当前tab页之后会对当前页面数据做操作,操作之后如果不点击保存,跳转tab页,则提示用户“当前页面未保存”,否则成功跳转,如图效果

代码如下,看官网对confirm是如何描述的,“我们将用Promise来处理后续响应”,也就是说,在点击了确定之后,用户会走到then方法中,这里时候是promise对象,允许用户跳转tab,如果是catch,我们手动抛出异常,中断用户跳转

  1. beforeLeave(newname,oldename){
  2. if(oldename =='fourth'){
  3. if(this.$store.state.editData && !this.$store.state.saveFlag){
  4. return this.$confirm('系统将不会保留您所做的更改!, 是否继续?', '提示', {
  5. confirmButtonText: '确定',
  6. cancelButtonText: '取消',
  7. type: 'warning'
  8. }).then(() => {
  9. // this.$store.commit('changeEditData',false)
  10. // this.$store.commit('changeSaveFlag',true)
  11. this.clickTab(newname)
  12. }).catch(() => {
  13. this.$message({
  14. type: 'info',
  15. message: '已取消保存'
  16. });
  17. throw new Error("取消成功!");
  18. });
  19. }else{
  20. this.activeTab = newname;
  21. this.clickTab(newname)
  22. }
  23. } else {
  24. this.activeTab = newname;
  25. if(newname != 'fourth'){
  26. this.clickTab(newname)
  27. }
  28. }
  29. },

用户未保存,阻断路由切换

  1. beforeRouteLeave (to, from, next) {
  2. if (this.$store.state.editData && !this.$store.state.saveFlag) {
  3. return this.$confirm('系统将不会保留您所做的更改!', '提示', {
  4. confirmButtonText: '确定',
  5. cancelButtonText: '取消',
  6. type: 'warning'
  7. }).then(() => {
  8. next()
  9. }).catch(err => {
  10. this.$message({
  11. type: 'info',
  12. message: '已取消保存'
  13. });
  14. next(false)
  15. })
  16. } else {
  17. next()
  18. }
  19. },

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/227752
推荐阅读
相关标签
  

闽ICP备14008679号