摘要:我們都知道,現(xiàn)在的前端開(kāi)發(fā)的最火的三大框架之一,它極大地方便了我們的前端工作者的工作,這是筆者整理的一份用寫(xiě)的一個(gè)的整個(gè)過(guò)程。
我們都知道,現(xiàn)在Vuejs的前端開(kāi)發(fā)的最火的三大框架之一,它極大地方便了我們的前端工作者的工作,這是筆者整理的一份用vue寫(xiě)的一個(gè)todolist的整個(gè)過(guò)程。
1.新建一個(gè)文件夾,配置環(huán)境變量
安裝的命令行有: npm init -y npm i -S todomvc-app-css underscore vue
2.新建一個(gè)HTML文件,復(fù)制格式化后的代碼段,網(wǎng)址:http://todomvc.com/examples/b...
將代碼段里邊的顯示內(nèi)容修改為中文
3.引入Vuejs css等文件
4.新建一個(gè)vue實(shí)例(框架)
5.實(shí)現(xiàn)的全過(guò)程
向data中的todoList中寫(xiě)入數(shù)據(jù) data: { // 備忘錄數(shù)組 todoList: [ // 一個(gè)任務(wù)就是一個(gè)對(duì)象,text表示任務(wù)的名稱(chēng),checked為true表示已完成,false表示未完成 { text: "學(xué)習(xí)Vue", checked: false }, { text: "學(xué)習(xí)React", checked: false } ] },
6.給li元素加上v-for指令,代碼如下:
7.
8.修改任務(wù)的checked值為true
{ text: "學(xué)習(xí)React", checked: true },
9.給li元素動(dòng)態(tài)綁定class,completed樣式的值,根據(jù)todo.checked, 如果todo.checked為 true時(shí)則有completed樣式,否則無(wú)completed的樣式
10.給checkbox加上v-model,值為todo.checked, checked屬性會(huì)自動(dòng)和todo.checked關(guān)聯(lián)
11.在data中新建任務(wù)
data: { // 新的備忘錄 newTodo: "", }
12.input元素綁定,回車(chē)事件和自動(dòng)除去前后空格的任務(wù)的添加
// 添加任務(wù)的方法,在methods中添加 addTodo() { // 去除前后的空格 this.newTodo = this.newTodo.trim(); //內(nèi)容為空 if (this.newTodo.length < 1) { return; } // 新建的任務(wù)添加到數(shù)組,默認(rèn)狀態(tài)為未完成 this.todoList.unshift({ text: this.newTodo, checked: false }); // 回車(chē)后清空輸入框的內(nèi)容 this.newTodo = "" }
13.添加一個(gè)計(jì)算屬性,判斷是否顯示任務(wù)列表
// 顯示列表,如果有任務(wù),則任務(wù)列表大于1,顯示,如果沒(méi)有任務(wù)則不顯示 computed: { showList() { return this.todoList.length > 0; } }
14.添加v-show:指令到section和footer
15.綁定刪除任務(wù)事件
引入underscore
16.刪除任務(wù)方法寫(xiě)在methods中
methods: { // 刪除任務(wù) deleteTodo(todo) { this.todoList = _.without(this.todoList, todo) } }
17.任務(wù)建立之后想要在任務(wù)上修改的方法
進(jìn)入編輯模式 添加一個(gè)數(shù)據(jù)項(xiàng): data: { // 正在編輯的任務(wù)索引 editingIndex: -1, } 綁定雙擊事件: 方法 methods: { // 編輯任務(wù) editTodo(index) { // 設(shè)置一下當(dāng)前正在編輯的索引 this.editingIndex = index; } }
18.在li中加上class
19.使用自定義指令
添加保存todo, 實(shí)際上就是把input框取消 保存的方法 methods: { ... // 保存任務(wù),因?yàn)槭莿?dòng)態(tài)綁定的,不需要再保存,只需要把input框隱藏即可 saveTodo(todo) { this.editingIndex = -1 if (todo.text.trim().length < 1) { this.deleteTodo(todo) } } }
20.未完成的數(shù)量
computed: { // 未完成的任務(wù)數(shù)量 activeCount() { return this.todoList.filter(item => { return !item.checked }).length; } }
21.數(shù)據(jù)保存到本地localStorage,新建store.js文件
var STORAGE_KEY = "todoList" window.todoStorage = { fetch() { try { return JSON.parse(localStorage.getItem(STORAGE_KEY) || "[]"); } catch(error) { return []; } }, save(todoList) { localStorage.setItem(STORAGE_KEY, JSON.stringify(todoList)); } } 引入store.js 在data中修改初始化數(shù)據(jù): data: { todoList: todoStorage.fetch() }
22.在Vue實(shí)例中添加一個(gè)屬性變化觀(guān)察,全局
// 觀(guān)察屬性變化 watch: { todoList: { deep: true, handler: todoStorage.save } },
23.全部完成功能的添加
添加計(jì)算屬性: computed: { // 是否所有任務(wù)都完成 allDone: { get() { // 未完成的數(shù)量為0表示全部完成,全部完成返回true return this.activeCount === 0; }, set(value) { this.todoList.forEach(todo => { todo.checked = value }); } } } 使用v-model綁定全部完成功能:
24.實(shí)現(xiàn)過(guò)濾所有,已完成,未完成的功能
在實(shí)例化Vue對(duì)象外面放一個(gè)普通的過(guò)濾對(duì)象: ``` // 一個(gè)普通的過(guò)濾的對(duì)象, 用來(lái)過(guò)濾任務(wù)列表 var filters = { all: function (todos) { return todos; }, active: function (todos) { return todos.filter(function (todo) { return !todo.checked; }); }, completed: function (todos) { return todos.filter(function (todo) { return todo.checked; }); } }; ``` 添加一個(gè)屬性visibility 來(lái)表示我們要顯示所有,還是顯示未完成,或已完成 data: { visibility: "all", ... } 修改一下未完成的數(shù)量這個(gè)計(jì)算屬性,使用上面的filters對(duì)象去過(guò)濾 computed: { ... // 未完成的任務(wù)數(shù)量 activeCount() { return filters.active(this.todoList).length; }, }
25添加任務(wù)過(guò)濾的計(jì)算屬性:
computed: { ... // 過(guò)濾任務(wù)列表 filteredTodoList: function () { return filters[this.visibility](this.todoList); } } 在DOM當(dāng)中添加點(diǎn)擊事件,點(diǎn)擊的時(shí)候修改visiblity屬性即可
26、列表渲染的循環(huán)語(yǔ)句修改:
27.點(diǎn)擊清空已完成功能:
添加一個(gè)已完成的任務(wù)數(shù)量計(jì)算屬性: computed: { ... // 已完成的任務(wù)數(shù)量 completedCount() { return filters.completed(this.todoList).length; } } 添加一個(gè)清空已完成的方法: methods: { ... // 清空已完成的任務(wù)列表 clearCompleted() { this.todoList = filters.active(this.todoList) } }
28、DOM元素綁定事件,以及v-show:
以上就是整理的所有內(nèi)容,有寫(xiě)的不好的或者錯(cuò)誤的,請(qǐng)及時(shí)告訴我改正
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/89760.html
摘要:開(kāi)發(fā)入門(mén)項(xiàng)目解析項(xiàng)目創(chuàng)建項(xiàng)目系統(tǒng)原因是系統(tǒng)的,在或者下使用了所以會(huì)有警告,忽略即可。意思就是你已經(jīng)安裝成功了。 Vue開(kāi)發(fā)入門(mén)todolist項(xiàng)目解析 項(xiàng)目:https://github.com/spritecoco... 創(chuàng)建vuejs項(xiàng)目(window系統(tǒng)) li vue init webpack demo1 npm install showImg(https://segmen...
摘要:開(kāi)發(fā)入門(mén)項(xiàng)目解析項(xiàng)目創(chuàng)建項(xiàng)目系統(tǒng)原因是系統(tǒng)的,在或者下使用了所以會(huì)有警告,忽略即可。意思就是你已經(jīng)安裝成功了。 Vue開(kāi)發(fā)入門(mén)todolist項(xiàng)目解析 項(xiàng)目:https://github.com/spritecoco... 創(chuàng)建vuejs項(xiàng)目(window系統(tǒng)) li vue init webpack demo1 npm install showImg(https://segmen...
閱讀 1058·2021-11-25 09:43
閱讀 1426·2021-11-18 10:02
閱讀 1871·2021-11-02 14:41
閱讀 2384·2019-08-30 15:55
閱讀 1082·2019-08-29 16:18
閱讀 2566·2019-08-29 14:15
閱讀 1401·2019-08-26 18:13
閱讀 748·2019-08-26 10:27