-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Get the shit done! #3
Comments
@wlf1112 bug 1: 刷新页面后待办就木有了~ |
老师,改完了@FrankFang |
样式加好了 |
@lzm320856 无法将多个标记为已完成,报错:
|
@FrankFang 已修改 |
@zhangjiuyi 界面很小清新哦 |
@WangXiaoyugg 永远不要给中文字加斜体样式 |
@lightbuild 使用
|
@ab690257072 BUG 1:你在页面上操作一段时间之后,就会发现新增的待办默认是「已完成」的。 |
@FrankFang 已修改,麻烦方方老师啦 |
@wlf1112 都是自己写的么,很棒啊 |
我参考官网的了@FrankFang |
陈功-task3 |
sorry 没时间看了 |
vue-todo boloog |
vue-todo 空末 |
1 similar comment
预览vue-todolist 已优化css |
首先新建项目目录
这样我们就可以基于之前的代码做新任务,同时不改动之前的代码。
学会一个框架的最好办法
学会一个框架的最好办法那就是——做毁一个项目。
接下来我们就要用 Vue.js 做一个待办事项小应用。简单起见,我们就不写 CSS 了,只用 HTML 和 JS 搞定。
我们的目标只有一个,就是搞清楚怎样用 Vue.js 进行开发。
需求
这个项目的英文名就暂定为 Todo,它有以下功能:
Getting Started
由于我们现在对 Vue.js 还一无所知,所以就走一步算一步先。
首先我们用 HTML 描绘一下我们的界面
page.html
div#app
,用于给 Vue 初始化div.newTask > input
用于让用户输入待办的内容ol.todos
用于容纳所有待办,每个待办就是一个<li>
添加待办
接下来我们做第一个需求,添加待办。
做之前你要想好流程:
ol.todos
里好的,开始做了。
我们用 todoList 数组作为所有待办事项的容器,newTask 作为 input 的值。
为什么要有 data?
这里出现了第一个令我们费解的地方——「为什么我们需要将 DOM 与 JS 变量(data)对应起来」。
如果我们用 jQuery 来写,直接在 input 的键盘事件中取出 input.value,构造一个
<li>
,插入到ol.todos
就完了嘛。对不对?这就是框架和库的区别了。jQuery 作为一个库,你想怎么用就怎么用,但是你在使用一个框架的时候,有很多「指导思想」是你要遵循的。Vue 的指导思想之一就是「尽量不要操作 DOM」,因为这个框架会帮你操作 DOM。
绑定数据
这一句将 input.value 与 data.newTodo 绑定起来了,而且是双向的:
怎么验证呢?
首先我们来验证在 JS 里改变 newTodo,input.value 就会变:
运行
webpack
,打开 page.html,可以看到 input 的值自己变化着。Tips:如果你不想每次都运行
webpack
,那么你可以新开一个命令行窗口,运行webpack --watch
,那么 webpack 就会在每次 JS 文件变化时自动重新运行。接下来验证 input.value 改变会导致 data.newTodo 变化:
F12 打开 console,然后在 input 里输入一些字符试试。
以上,就是双向绑定。
细节请自行查看 https://cn.vuejs.org/v2/guide/forms.html
绑定事件
我们需要在用户敲击 回车 的时候,在 data.todoList 里新建一个对象。
如何监听用户的键盘事件呢?请查看 https://cn.vuejs.org/v2/guide/events.html
看完这一节,你就能写出以下代码了:
app.js
page.html
这时你刷新 page.html,在 input 里面输入 回车,就会在控制台看到 todoList 不是空字符串了:
展示新待办
虽然 data.todoList 已经含有一个新的项目了,但是页面里却没有展示。
根据 https://cn.vuejs.org/v2/guide/list.html 写出下面代码:
page.html
然后重新刷新页面,在 input 输入一些字符,回车。你就会看到新增成功了:
优化
按照正常人的逻辑,添加成功后,input 的值应该清空,于是我们改写 app.js:
app.js
刷新试试效果如何吧。
标记为完成
思路:
<li>
里面添加一个 checkbox代码如下:
app.js
page.html
效果如下:
删除待办
思路:
代码如下:
app.js
page.html
效果如下(GIF有点大,请稍等或开代理)
保存待办事项
我们发现每次刷新页面,待办就没了。
这是因为这些代码都保存在内存里,而内存是无法持久的。所以我们选择保存在 localStorage 中。
思路:
代码如下:
app.js
由于我们只涉及数据的变化,所以 page.html 不变。
让我看到你的应用
你可以将这个应用部署到 GitHub Pages 上。
{{ }}
标记,不要紧,等一会就好。如果你不想让用户看见这些,可以看 https://cn.vuejs.org/v2/api/#v-cloak致饥人谷学员
Just get this shit done.
把你的预览页面发到下面,你就成功了。
如果还有时间,建议看看 TodoMVC 项目。比我们这个应用复杂一丢丢,你已经可以独自完成 TodoMVC 了,如果你完成了,把你的链接放在下面单独 at 我。
挑战
The text was updated successfully, but these errors were encountered: