鍍金池/ 問(wèn)答/HTML5  HTML/ 定時(shí)器里不能寫vue的代碼?

定時(shí)器里不能寫vue的代碼?

一個(gè)創(chuàng)建賬號(hào)頁(yè)面,創(chuàng)建成果的話我就讓他跳轉(zhuǎn)到列表頁(yè)。
我在定時(shí)器里寫上頁(yè)面跳轉(zhuǎn)代碼,但是不能執(zhí)行。
如果去掉定時(shí)器就正常
這是什么原因呀

axios.post('/campaign/add',campaignEntity,{
    headers: {
        Authorization : getCookie('token'),
    },
})
.then(res=>{
    if(res.data.status == 1){
        this.$message({
            message: '創(chuàng)建成功',
            type: 'success',
            duration:1800
        });
        setTimeout(function()
        {
            alert(1111);  //能執(zhí)行
            this.$router.push({path:"/campaign"}); //不能執(zhí)行,說(shuō)push未定義
        },1850)
    }
})
回答
編輯回答
詆毀你

this this this !

setTimeout(()=>{
    alert(1111);  //能執(zhí)行
    this.$router.push({path:"/campaign"}); //不能執(zhí)行,說(shuō)push未定義
},1850)
2017年1月12日 14:16
編輯回答
笑忘初

setTimeout傳遞的不是箭頭函數(shù),而且你里面還寫了this,函數(shù)在執(zhí)行時(shí),this指向了window,window是沒(méi)有$router屬性的。

解決方法:要么換成箭頭函數(shù),讓this指向外層域中的this;要么在外層使用var self=this;函數(shù)內(nèi)使用self變量調(diào)用self.$router...

2017年6月18日 07:39
編輯回答
短嘆

this指向變了呀

2018年3月13日 04:08
編輯回答
解夏

作用域了解一下,在外部聲明一個(gè) let that = this;里面調(diào)用用that

2017年12月15日 06:46
編輯回答
孤影

改下代碼試試:

setTimeout(() => {
    alert(1111);  //能執(zhí)行
    this.$router.push({path:"/campaign"});
}, 1850)
2017年10月31日 20:19