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

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

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

浮云间 2019-03-21 14:15:31
一个创建账号页面,创建成果的话我就让他跳转到列表页。我在定时器里写上页面跳转代码,但是不能执行。如果去掉定时器就正常这是什么原因呀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)    }})
查看完整描述

5 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

this指向变了呀


查看完整回答
反对 回复 2019-04-04
?
慕村225694

TA贡献1880条经验 获得超4个赞

改下代码试试:


setTimeout(() => {

    alert(1111);  //能执行

    this.$router.push({path:"/campaign"});

}, 1850)


查看完整回答
反对 回复 2019-04-04
?
慕妹3242003

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

setTimeout传递的不是箭头函数,而且你里面还写了this,函数在执行时,this指向了window,window是没有$router属性的。

解决方法:要么换成箭头函数,让this指向外层域中的this;要么在外层使用var self=this;函数内使用self变量调用self.$router...


查看完整回答
反对 回复 2019-04-04
?
森林海

TA贡献2011条经验 获得超2个赞

作用域了解一下,在外部声明一个 let that = this;里面调用用that


查看完整回答
反对 回复 2019-04-04
  • 5 回答
  • 0 关注
  • 709 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信