<div class="verification-code-wrapper">
<input type="text" placeholder="六位數(shù)字驗證碼" ref="phone_login_verification_code">
<a class="get-code"
@click="get_verification_code(phone_login, type=3)">獲取驗證碼</a>
<div class="count-down" v-show="does_count_down_show">
{{time_60}}{{count_down}}秒后重新獲取
</div>
</div>
computed: {
count_down: function () {
// 查一下cookie中 驗證碼字段 是不是存在
let cookie_arr = document.cookie.split(';');
let expires;
for (let i = 0; i < cookie_arr.length; i++) {
let cookieArrTrim = cookie_arr[i].trim();
if (cookieArrTrim.indexOf('count_down') === 0) {
expires = cookieArrTrim.substring('count_down'.length + 1, cookieArrTrim.length);
}
}
if (!expires) {
return null;
}
window.setInterval(() => {
this.time_60 -= 1;
}, 1000);
},
does_count_down_show: function () {
let cookie_arr = document.cookie.split(';');
let expires;
for (let i = 0; i < cookie_arr.length; i++) {
let cookieArrTrim = cookie_arr[i].trim();
if (cookieArrTrim.indexOf('count_down') === 0) {
expires = expires = cookieArrTrim.substring('count_down'.length + 1, cookieArrTrim.length);
}
}
if (this.time_60 > 0 && expires) {
return true;
}
else {
return false;
}
}
},
點擊事件中,從后臺取回驗證碼后,會以當(dāng)前時間+60s當(dāng)做一個cookie存儲。
現(xiàn)在的問題是:一般的驗證碼重新發(fā)送倒計時是點擊了【發(fā)送】后立刻變換文字,開始倒計時。
我這個點擊了發(fā)送后沒有變化,必須重新刷新一次才會開始倒計時。
請問應(yīng)該怎么改才能立刻開始渲染?
也許需要在點擊事件中寫一個flag,綁定到發(fā)送按鈕,watch一下?
代碼有重復(fù)的,因為原本是一個方法,我分拆了一下實驗,見諒。
I have already solved this problem, there are too many conditions which unnecessary,I make it brief.
computed方法會在頁面初始化的時候執(zhí)行一次,第一次應(yīng)該是被return掉才執(zhí)行setinterval,然后是函數(shù)內(nèi)部中使用的data中的屬性發(fā)生變化的時候才會執(zhí)行,你點擊的事件并沒有改變time_60 這個值,所以count_down并沒有執(zhí)行,刷新后應(yīng)為cook中有值,沒有被return 才會運行setinterval;1樓說的對,這樣的邏輯不適合寫在計算屬性中,應(yīng)該定義在methods中,在掉接口的回調(diào)中運行比較合適。
還有個問題count_down中沒有return 任何有效值,看你的邏輯,應(yīng)該只會展示undefined和null.
<div class="count-down" v-if="countDownShow">{{time}}秒后重新獲取</div>
data() {
return{
countDownShow: false,
time:60
}
},
methods:{
countDown: function () {
// 查一下cookie中 驗證碼字段 是不是存在
let cookie_arr = document.cookie.split(';');
let expires;
for (let i = 0; i < cookie_arr.length; i++) {
let cookieArrTrim = cookie_arr[i].trim();
if (cookieArrTrim.indexOf('count_down') === 0) {
expires = cookieArrTrim.substring('count_down'.length + 1, cookieArrTrim.length);
}
}
if (!expires && this.time > 0) {
this.countDownShow = true
}
let timeInter;
timeInter = window.setInterval(() => {
if(this.time === 0){
clearInteral(timeInter)
}else{
this.time_60 -= 1;
}
}, 1000);
},
}
獲取完驗證碼后執(zhí)行 this.countDown()方法即可。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。