vue學(xué)習(xí)之做事列表todoList

這次用vue實(shí)現(xiàn)簡(jiǎn)單的做事列表單许师。包含事件添加房蝉、統(tǒng)計(jì)、刪除微渠、標(biāo)記(已完成/未完成)搭幻。

做事列表

一、功能實(shí)現(xiàn)

做事列表也是通過(guò)v-for循環(huán)渲染出的列表效果逞盆,根據(jù)data中plans數(shù)據(jù)獲取到的檀蹋,也可以通過(guò)axios獲取json數(shù)據(jù)。

(1)事情獲取和狀態(tài)分類

首先先介紹如何將所有數(shù)據(jù)分成:全部任務(wù)云芦、已完成俯逾、未完成。這里剛開(kāi)始定義當(dāng)isSekected為true時(shí)就是完成狀態(tài)舅逸。這些分類后的數(shù)據(jù)列表是通過(guò)計(jì)算的到的桌肴,所以采用computed計(jì)算屬性來(lái)實(shí)現(xiàn)。

再者就是琉历,怎么通過(guò)點(diǎn)擊不同的鏈接顯示不同狀態(tài)的數(shù)據(jù)坠七?這里使用hash值來(lái)區(qū)分水醋。即通過(guò)在網(wǎng)址后面加哈希值來(lái)顯示不同條件的結(jié)果。然后再computed中我們根據(jù)不同鏈接的hash值彪置,來(lái)計(jì)算不同的狀態(tài)數(shù)據(jù)拄踪。

html-hash

在vue實(shí)例中,定義computed中的屬性filterPlans拳魁,實(shí)現(xiàn)根據(jù)不同的hash值返回不同的顯示數(shù)據(jù)惶桐。(finish表示被選中的,unfinish表示沒(méi)有選中的)(只要理清邏輯潘懊,實(shí)現(xiàn)很簡(jiǎn)單^.^)

然后在v-for中遍歷的數(shù)據(jù)改成filterPlans即可姚糊。

(2)未完成統(tǒng)計(jì)

跟上面的原理差不多,也是根據(jù)computed計(jì)算屬性計(jì)算得到count的值卦尊,通過(guò){{}}渲染在頁(yè)面上叛拷。

這里要記住一個(gè)原則:只要是要顯示計(jì)算屬性的值舌厨,就寫在computed里面岂却。

漏了一點(diǎn):前面講到通過(guò)hash值顯示不同的狀態(tài)數(shù)據(jù),實(shí)現(xiàn)動(dòng)態(tài)刷新的效果裙椭。但是在頁(yè)面初始化加載躏哩,即created函數(shù)中,需要監(jiān)控hash的變化揉燃,即如果頁(yè)面已經(jīng)有hash值了扫尺,重新刷新頁(yè)面也要獲取hash值。并且將hash值的變化映射到數(shù)據(jù)內(nèi)炊汤。(hash值只需要后面的名字正驻,不用‘/#’這兩個(gè)字符)

只有這樣才能將窗口里面的hash值成功傳到this.hash中,才能真正顯示不同的狀態(tài)數(shù)據(jù)抢腐,否則點(diǎn)擊那幾個(gè)標(biāo)簽是沒(méi)有任何反應(yīng)的姑曙。下面代碼添加到created()中:

this.hash = window.location.hash.slice(2) ||"all"; // 如果沒(méi)有觸發(fā),也需要初始化一個(gè)hash值

window.addEventListener('hashchange',()=>{

this.hash = window.location.hash.slice(2);

},false)// 這里默認(rèn)就是false

(3)添加和刪除

這個(gè)很簡(jiǎn)單迈倍,就創(chuàng)建兩個(gè)methods:remove和add伤靠,分別使用filter和push數(shù)組方法改變數(shù)組的元素。

添加和刪除

二啼染、完善

(1)為了讓做事列表的狀態(tài)有區(qū)分宴合,更美觀,需要到選擇該條事情標(biāo)記為已完成時(shí)改變它的顯示效果迹鹅。如:

狀態(tài)區(qū)分

這里使用class動(dòng)態(tài)綁定實(shí)現(xiàn)卦洽,即當(dāng)isSelected為true時(shí)添加相應(yīng)的class

:class="{del:one.isSelected}",one是指循環(huán)中的某一條數(shù)據(jù)斜棚,del是自定義的css樣式逐样。

關(guān)于class和style的用法,更詳細(xì)的可以參照vue官方教程-class&style

(2)允許修改添加后的事件

編輯模式

即雙擊該行進(jìn)入可編輯狀態(tài),失去焦點(diǎn)或回車回到原來(lái)的模式并顯示修改后的結(jié)果脂新。

這種情況挪捕,由于當(dāng)前雙擊的一條li和其他有區(qū)分,可以事先寫兩個(gè)input争便,使用v-show级零,根據(jù)不同的條件顯示不同的input,當(dāng)雙擊的某項(xiàng)時(shí)滞乙,將該項(xiàng)one傳給當(dāng)前項(xiàng)cur娱挨,如果one==cur,則根據(jù)自定義的指令v-focus航缀,實(shí)現(xiàn)讓輸入框獲取焦點(diǎn)芳誓。如果li失去焦點(diǎn)或者回車,則執(zhí)行cancel將cur=''兔簇,這樣滿足one发绢!=cur,顯示上面的input垄琐。

自定義指令需要定義在directtives里面:

editor和cancel方法實(shí)現(xiàn):

(3)還需要一個(gè)功能:當(dāng)數(shù)據(jù)發(fā)生變化時(shí)實(shí)時(shí)將數(shù)據(jù)傳到本地存儲(chǔ)localStorage边酒,這樣關(guān)掉之后再打開(kāi)仍會(huì)顯示之前的結(jié)果。

①頁(yè)面初加載時(shí)狸窘,如果本地localStorage有數(shù)據(jù)用他里面存的墩朦,如果沒(méi)有則用默認(rèn)的。

this.plans = JSON.parse(localStorage.getItem('data')) ||this.plans;

②有了獲取翻擒,當(dāng)然要時(shí)刻監(jiān)控?cái)?shù)據(jù)變化并且存到本地存儲(chǔ)中setItem氓涣。

watch只能監(jiān)控一層的數(shù)據(jù)變化,即數(shù)據(jù)plans中如果數(shù)組添加一個(gè)對(duì)象陋气,則能監(jiān)控到劳吠,但是若只是改變數(shù)組中某個(gè)對(duì)象的val則不會(huì)被監(jiān)控到,比如對(duì)某條進(jìn)行修改恩伺。如果是要進(jìn)行深度監(jiān)控赴背,我們需要把plans變成一個(gè)對(duì)象。

localStorage默認(rèn)存的是字符串晶渠,getItem--用JSON.parse和setItem--用JSON.stringify進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換

watch:{

? ? plans:{

handler(){

? ? ? ? ? ?localStorage.setItem('data',JSON.stringify(this.plans));

? ? ? ? },deep:true

? ? }

},

描述不準(zhǔn)確或者錯(cuò)誤的地方請(qǐng)多多指教;思浴!褒脯!

完整代碼參考參考vue-demo中的newTodo.html和newTodo.js

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末便瑟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子番川,更是在濱河造成了極大的恐慌到涂,老刑警劉巖脊框,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異践啄,居然都是意外死亡浇雹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門屿讽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)昭灵,“玉大人,你說(shuō)我怎么就攤上這事伐谈±猛辏” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵诵棵,是天一觀的道長(zhǎng)抠蚣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)履澳,這世上最難降的妖魔是什么嘶窄? 我笑而不...
    開(kāi)封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮奇昙,結(jié)果婚禮上护侮,老公的妹妹穿的比我還像新娘敌完。我一直安慰自己储耐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布滨溉。 她就那樣靜靜地躺著什湘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晦攒。 梳的紋絲不亂的頭發(fā)上闽撤,一...
    開(kāi)封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音脯颜,去河邊找鬼哟旗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛栋操,可吹牛的內(nèi)容都是我干的闸餐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼矾芙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼舍沙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起剔宪,我...
    開(kāi)封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拂铡,失蹤者是張志新(化名)和其女友劉穎壹无,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體感帅,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斗锭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了失球。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拒迅。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖她倘,靈堂內(nèi)的尸體忽然破棺而出璧微,到底是詐尸還是另有隱情,我是刑警寧澤硬梁,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布前硫,位于F島的核電站,受9級(jí)特大地震影響荧止,放射性物質(zhì)發(fā)生泄漏屹电。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一跃巡、第九天 我趴在偏房一處隱蔽的房頂上張望危号。 院中可真熱鬧,春花似錦素邪、人聲如沸外莲。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)偷线。三九已至,卻和暖如春沽甥,著一層夾襖步出監(jiān)牢的瞬間声邦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工摆舟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亥曹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓恨诱,卻偏偏與公主長(zhǎng)得像媳瞪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胡野,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,448評(píng)論 0 13
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,913評(píng)論 2 89
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理材失,服務(wù)發(fā)現(xiàn),斷路器硫豆,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 現(xiàn)在龙巨,我必須反思一下了笼呆,近來(lái)連續(xù)好幾次寫作都拖到最后,而上次交作業(yè)都拖最后幾秒旨别,手指還是追不上時(shí)間诗赌,導(dǎo)致遲了幾秒交...
    樓頂上的小樹(shù)閱讀 625評(píng)論 0 4
  • 謹(jǐn)以此文獻(xiàn)給全天下的母親递览。 成功是生命的法則叼屠,這完全取決于我們是否把生活當(dāng)成生活,生活與母親在我們的內(nèi)在是同一件事...
    2018劉紅蓮閱讀 525評(píng)論 0 13