定时器里不能写vue的代码?

一个创建账号页面,创建成果的话我就让他跳转到列表页。

我在定时器里写上页面跳转代码,但是不能执行。

如果去掉定时器就正常

这是什么原因呀


axios.post('/campaign/add',campaignEntity,{

    headers: {

        Authorization : getCookie('token'),

    },

})

.then(res=>{

    if(res.data.status == 1){

        this.$message({

            message: '创建成功',

            type: 'success',

            duration:1800

        });

        setTimeout(function()

        {

            alert(1111);  //能执行

            this.$router.push({path:"/campaign"}); //不能执行,说push未定义

        },1850)

    }

})


浮云间
浏览 710回答 5
5回答

喵喔喔

this指向变了呀

慕村225694

改下代码试试:setTimeout(() => {    alert(1111);  //能执行    this.$router.push({path:"/campaign"});}, 1850)

慕妹3242003

setTimeout传递的不是箭头函数,而且你里面还写了this,函数在执行时,this指向了window,window是没有$router属性的。解决方法:要么换成箭头函数,让this指向外层域中的this;要么在外层使用var self=this;函数内使用self变量调用self.$router...

森林海

作用域了解一下,在外部声明一个 let that = this;里面调用用that
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript