vue2的todolist怎么用
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,今天就跟大家聊聊有关vue2的todolist怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。项目用到了vue.js vue.cli we
千家信息网最后更新 2025年11月10日vue2的todolist怎么用
今天就跟大家聊聊有关vue2的todolist怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
项目用到了vue.js vue.cli webpack ES6 node环境,完成项目后会对这些技术栈有了些了解。
准备开发环境
$ npm install -g vue-cli$ vue init ,比如 vue init webpack todolist$ cd todolist$ npm install$ npm run dev
安装谷歌插件vue.js devtools
下载vue.js的webpack模板
下载todomvc的模板 (提供html和css)(也可以直接$ git clone https://github.com/tastejs/todomvc-app-template.git 来下载)
把todomvc的index.html拖到todolist文件夹去覆盖里面的index.html
打开todomvc的json文件,会看到 "todomvc-app-css": "^2.0.0",就是要你 npm install todomvc-app-css -S 从而下载该css
删点todolsit index.html的默认css,js引用,src文件夹下的main.js引入模板css(import'todomvc-app-css/index.css')
引入vue(import Vue form 'vue')
等写完代码后 $npm run build 一键打包构建,会看到dist文件夹
main.js的代码
//后面的为注释讲解, ~表示串联index.html的对应内容import 'todomvc-app-css/index.css'import Vue from 'vue'//添加localStoragevar STORAGE_KEY = 'todos-vuejs-2.0'var todoStorage = { fetch: function () { var todos = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]') todos.forEach(function (todo, index) { todo.id = index }) todoStorage.uid = todos.length return todos }, save: function (todos) { localStorage.setItem(STORAGE_KEY, JSON.stringify(todos)) }}//用过滤器筛选出三种状态var filters = { all(todos) { return todos }, active(todos) { return todos.filter((todo) => { return !todo.completed }) }, completed(todos) { return todos.filter((todo) => { return todo.completed }) },}let app = new Vue({ el: '.todoapp', // ~ data: { msg: 'hello world', title: '待做清单', // 渲染标题 ~ {{title}} newTodo: '', todos: todoStorage.fetch(), // ~ v-show="todos.length" ; ~ {{todos.length>1?'items':'item'}} 渲染 li ~ v-for="(todo,index) in filteredTodos" editedTodo: '', // 空的编辑对象 hashName: 'all' }, watch: { todos: { handler: function (todos) { todoStorage.save(todos) }, deep: true } }, computed: { remain() { return filters.active(this.todos).length //未完成事项的数量 ~ {{remain}} }, isAll: { // ~ v-model="isAll" get() { return this.remain === 0 }, set(value) { this.todos.forEach((todo) => { todo.completed = value }) } }, filteredTodos() { //用hashName过滤出当前页面的todos ~ v-for="(todo,index) in filteredTodos" return filters[this.hashName](this.todos) } }, methods: { addTodo(e) { //输入值为空时,不添加(trim去除前后空格) ~ v-model.trim="newTodo" if (!this.newTodo) { return } this.todos.push({ id: todoStorage.uid++, content: this.newTodo, completed: false //结合v-model 根据completed状态绑定样式 ~:class="{completed:todo.completed; ~ v-model="todo.completed" }) this.newTodo = '' }, removeTodo(index) { //绑定x样式,点击删除该todo ~ @click="removeTodo(index)" this.todos.splice(index, 1) }, editTodo(todo) { //编辑 ~ @dblclick="editTodo(todo)" this.editCache = todo.content //储存编辑前的内容 this.editedTodo = todo // 点击编辑里面的内容而不是只是空文本框~ editing:todo==editedTodo}" }, doneEdit(todo, index) { //失去焦点后 ~ @blur="doneEdit(todo)";@keyup.enter="doneEdit(todo)" this.editedTodo = null //不存在编辑了或者说编辑已完成 if (!todo.content) { //如果编辑后没有内容了,删除该todo this.removeTodo(index) } }, cancelEdit(todo) { //按esc键取消此次编辑操作 ~ @keyup.esc="cancelEdit(todo)"> this.editedTodo = null todo.content = this.editCache //当esc取消编辑时,还原编辑前的内容 }, clear() { //点击清除已完成的功能 ~ @click="clear" this.todos = filters.active(this.todos) //获取并渲染未完成的事项 ~ } }, directives: { //自定义属性 ~ v-focus="todo == editedTodo" focus(el, value) { //文本框双击获取焦点 if (value) { el.focus() } } }})//hash(url地址中#以及之后的字符)function hashChange() { // ~ :class="{selected:hashName=='all'}";:class="{selected:hashName=='active'}";:class="{selected:hashName=='completed'}" let hashName = location.hash.replace(/#\/?/, '') //正则表达式去除#/?,获取如all,active,completed if (filters[hashName]) { //如果过滤状态的hashName存在 app.hashName = hashName //给整个app变量里的hashName赋上那个值 } else { location.hash = '' //取消 app.hashName = 'all' //否则就赋值'all',回到全部事项的页面 }}window.addEventListener('hashchange', hashChange) //全局监听hash 看完上述内容,你们对vue2的todolist怎么用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容
文件
事项
文件夹
模板
状态
代码
文本
样式
焦点
环境
页面
项目
全局
功能
变量
只是
地址
字符
对象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何看自己的数据库是哪个版本的
华为网络安全考试题库及答案中级
全球电话号码数据库
网络服务器管理方案
小程序数据库单集合索引限制
校园网络安全需求的具体内容
视频直播服务器带宽
日本软件开发公立大学
网络安全黑板报色彩
网络安全需求属于什么
如何查询数据库显示字段的值
河南现代软件开发
男孩子的软件开发职业
软件开发证书怎么查询
建60g数据库需要多少钱
数据库sql操作案例
海珠区软件开发学费
网络安全恶性行为检测
什么是服务器管理口
类似alook的软件开发者
无锡网络安全大会
数据库设置默认值怎么弄
李琦中国科学技术大学网络安全
在数据库中添加参引
数据库的表都是err的吗
北京大数据软件开发收费报价表
软件开发工程师年报
软件开发人员外包服务哪家好
网络安全主机安全审计内容
宽带网络技术考试试题