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