亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

大佬們遇到過這個問題嗎?小白問問vue中this的問題

大佬們遇到過這個問題嗎?小白問問vue中this的問題

呼喚遠方 2019-09-19 22:36:42
我寫了一個n次點擊后才觸發的方法函數,然后想在vue中使用,但是發現about中this是個{}要怎么樣才能正確的拿到this呢,搜了半天沒搞懂...這是按鈕這是點擊的方法about:afterNClick(()=>{this.$alert('test')})這是n次點擊后才觸發的方法函數//n次點擊后觸發functionafterNClick(fn,times=5){letcount=0,timer=null;return()=>{count++;timer&&clearTimeout(timer);if(count>=times){fn&&fn();returncount=0;}timer=setTimeout(()=>{count=0;},500)}}
查看完整描述

2 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

你的代碼,this丟掉;關鍵的環節是這行代碼:
about:afterNClick()
//上面這行代碼,你需要知道afterNClick()這個執行,是在上面時候發生的;
//他的執行時間是,newVue()的時候,也就是發生在組件的`beforeCreate`之前,所以怎么改代碼都不會把this指導當前組件實例,
因此需要修改,執行的時機;修改到mounted里面去
mounted(){
this['funName']=afterNClick(()=>{/**這個時候this,一定是當前組件**/})
}
當前這樣寫的問題是,沒辦法直接在template里面進行使用了,因此需要在套一個方法
methods:{
click:()=>{
this.['funName']();
}
}
思路如上,具體代碼如下:
                            
查看完整回答
反對 回復 2019-09-19
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

about:function(){
afterNClick(()=>{
console.log(this);
this.$alert('test');
});
}
//或者
about:function(){
letts=this;
afterNClick(()=>{
console.log(ts);
ts.$alert('test');
});
}
另外,很好奇。你的afterNClick是vue實例的其中一個method嗎?如果這個方法從需求上講就應該隸屬于該實例,請盡量寫入該實例的methods里。
vue中,this默認指向當前vue實例。使用箭頭函數并不會改變this指向。
                            
查看完整回答
反對 回復 2019-09-19
  • 2 回答
  • 0 關注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號