TodoMVC 是一个经典项目,让开发者快速实践到框架开发方式。
官网地址:http://todomvc.com/
准备工作
-
从 github 克隆项目模板。
-
进入项目目录,安装项目依赖
- cd 项目目录
- npm install
-
安装 Vue.js
- npm install vue
需求分析
需求项 | 细分项 |
---|---|
事项列表展示 | 1. 有事项的情况 2. 没有事项的情况 |
状态栏展示 | 1. 个数展示 2. 单位处理 |
事项状态切换 | 1. 单个事项切换 2. 多个事项切换 |
事项新增 | 1. 内容检测 2. 回车新增 |
事项删除 | 1. 单个事项删除 2. 已完成事项删除 |
事项编辑 | 1. 触发编辑 2. 取消编辑 3. 保存编辑 |
事项筛选 | 1. 点击切换显示类别 2. 更新渲染所有事项 |
事项数据持久化 | 1. 读取本地存储 2. 更新本地存储 |
事项列表展示
引入 vue.js 文件,创建 Vue 实例设置挂载元素。 在 data 中设置 todos 存储初始数据。
设置事项视图:
设置有无事项时的显示状态:
状态栏信息展示
个数展示:
单位处理:
事项状态切换
单个事项切换通过 v-model 的设置已经实现了,多个事项切换分为两部分功能: 单个事项操作、全部切换选框操作。
单个事项切换会导致 toggle-all 状态变化,我们可以通过 remaining 来进行判断:
设置 v-model 后,主动操作 toggle-all 相当于设置 allDone 数据,这时需要给 allDone 设置 setter 来处理。
事项新增
需要实现的功能为: 输入框内容绑定、回车新增事项。
在 data 中设置 newTodo 用于存储数据,并绑定给新增输入框。
输入框回车时检测内容,并根据输入内容新增事项到 todos。
事项删除
需要实现的功能为:单个事项删除、已完成事项删除。
点击单个事项中的删除按钮时,删除 todos 中对应的对象数据。
已完成事项按钮的需要在具有已完成事项时显示。
操作后,事项列表中只保留未完成事项即可。
事项编辑
需要实现的功能为: 触发编辑、取消编辑、保存编辑。
双击时进行记录正在编辑的 todo,并保存原始 todo 内容。
正在被编辑的 li 需要设置类名 editing。
触发编辑后,输入框无法自动获取焦点,可通过自定义指令实现。
点击 esc 键取消编辑,还原事项内容与状态。
点击回车键或失去焦点时保存编辑。
当编辑内容为空时保存,应当删除 todo 。
回车也会失去焦点,为避免重复触发事件,需进行检测。
事项筛选
需要实现的功能为: 记录筛选类别、点击更改类别。
在 data 中声明数据存储当前显示的事项类别,并在点击筛选按 钮时更改显示的事项类别:
设置用于筛选不同类别事项的函数,并统一存储。
设置计算属性处理 todoType,并设置给视图。
之前使用过的数据筛选函数也可以通过 filters 进行统一设置。
事项数据持久化
需要实现的功能为: 获取本地存储、更新本地存储。
封装函数,用于进行本地存储数据读取。
将事项数据更改为本地存储数据。
封装本地存储的更新功能。
由于多种事项操作都需要更新本地存储,单个设置十分繁琐,可以通过侦听器统一设置。