Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript VueJS:在路由删除之前绕过_Javascript_Vue.js_Vuejs2 - Fatal编程技术网

Javascript VueJS:在路由删除之前绕过

Javascript VueJS:在路由删除之前绕过,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我有一个Vue水疗中心。在组件内部,我使用beforeRouteLaveguard来防止用户意外离开页面。在该组件中,有时我会触发一个ajax请求,一旦成功,它必须将页面重定向到另一个位置 问题是一旦ajax请求成功并且$router.push()尝试执行重定向,beforeRouteAve不允许重定向 如何在路由删除之前临时绕过,$router执行重定向 <script> methods:{ someAjaxCall() { axios.post(

我有一个Vue水疗中心。在组件内部,我使用
beforeRouteLave
guard来防止用户意外离开页面。在该组件中,有时我会触发一个ajax请求,一旦成功,它必须将页面重定向到另一个位置

问题是一旦ajax请求成功并且
$router.push()
尝试执行重定向,
beforeRouteAve
不允许重定向

如何在路由删除之前临时绕过
$router
执行重定向

<script>

methods:{
    someAjaxCall()
    {
        axios.post('...')
        .then(res=>{
            this.$router.push({
                name: 'route.name.here'
            })
        })
    }
},

beforeRouteLeave(to, from, next){
    next(window.confirm('Are you sure? Progress will be discarded.'))
},

</script>

方法:{
someAjaxCall()
{
axios.post(“…”)
。然后(res=>{
这是$router.push({
名称:'路线。名称。这里'
})
})
}
},
出发前(到、从、下一个){
下一步(window.confirm('您确定吗?进度将被丢弃'))
},

我可以使用带条件的布尔变量绕过保护:

<script>

data(){
    return {
        avoidRouteLeave: false,
    }
},
methods:{
    someAjaxCall()
    {
        axios.post('...')
        .then(res=>{
            this.avoidRouteLeave = true
            this.$router.push({
                name: 'route.name.here'
            })
        })
    }
},

beforeRouteLeave(to, from, next){
    if(this.avoidRouteLeave)
        next()
    else
        next(window.confirm('Are you sure? Progress will be discarded.'))
},

</script>

数据(){
返回{
回避:假,
}
},
方法:{
someAjaxCall()
{
axios.post(“…”)
。然后(res=>{
this.avoidRouteLeave=true
这是$router.push({
名称:'路线。名称。这里'
})
})
}
},
出发前(到、从、下一个){
如果(本.避免离开)
下一个()
其他的
下一步(window.confirm('您确定吗?进度将被丢弃'))
},