Vue学习完成Todo List网页,供大家参考,具体内容如下

跟着老师学习Vue,我喜欢清爽的界面,就自己改了样式,看起来还不错,以后就用来记录要做的事情,实用性还蛮强。
Vue非常容易上手,运用到了双向绑定机制,即HTML里的DOM元素与JS里的Vue实例进行双向绑定,只要Vue实例中的代理数据改变,HTML中的实际数据就会跟着变,这和原生的Js的命令驱动模式不同,它是数据驱动模式,通过数据的改变来控制DOM的变化。什么意思呢?我们会在接下去的学习中慢慢实践。
Todo List这个网页用到了很多Vue的指令,在这里我贴出一部分代码,全部代码请戳我的Github
以下是HTML部分
<div class="main">
<h3 class="big-title">添加任务:</h3>
<input
placeholder="在此添加任务"
class="task-input"
type="text"
v-model="things"
@keyup.enter="addTodo"
/>
<ul class="task-count" v-show="list.length">
<li>
{{unCheckedLength}}个任务未完成</li>
<li class="action">
<a :class="{active: visibility == 'all'}" href="#all" rel="external nofollow" >所有任务</a>
<a :class="{active: visibility == 'unfinished'}"href="#unfinished" rel="external nofollow" >未完成任务</a>
<a :class="{active: visibility == 'finished'}"href="#finished" rel="external nofollow" >完成任务</a>
</li>
</ul>
<div class="tasks">
<span class="no-task-tip" v-show="!list.length">还没有添加任何任务</span>
<ul class="todo-list">
<li class="todo" v-for="item in filteredList" :class="{completed: item.isChecked,editing:item === editItem}" >
<div class="view">
<div class="word">
<input class="toggle" type="checkbox" v-model="item.isChecked" >
<label @dblclick="editTodo(item)">{{item.title}}</label>
</div>
<button class="destroy" type="text" @click="deleteTodo(item)">×</button>
</div>
<input
v-focus="editItem === item"
class="edit"
type="text"
v-model="item.title"
@blur="edited"
@keyup.enter="edited"
@keyup.esc="cancel(item)"
/>
</li>
</ul>
</div>
</div>
Vue实例部分
var vm = new Vue({
el: ".main",
data: {
list:list,
things:"",
editItem:"",
beforeTitle:"",
visibility:"all",
inputId:"",
},
watch:{
list:{
handler:function(){
store.save("todolist",this.list)
},
deep:true
}
},
computed:{
unCheckedLength(){
return this.list.filter(function(item){
return item.isChecked == false
}).length
},
filteredList(){
return filter[this.visibility] ? filter[this.visibility](this.list) : list
}
},
methods: {
addTodo(ev){
if(this.things !== ""){
var item = {
title:this.things,
isChecked:false,
}
this.list.push(item)
}
this.things = "";
},
deleteTodo(item){
var index = this.list.indexOf(item);
this.list.splice(index,1);
},
editTodo(item){
this.beforeTitle = item.title;
this.editItem = item
},
edited(item){
this.editItem = ""
},
cancel(item){
item.title = this.beforeTitle;
this.editItem = "";
this.beforeTitle = ""
}
},
directives:{
"focus":{
update(el,binding){
if(binding.value){
el.focus()
}
}
}
}
});
这是一个基本的Vue实例,el是和DOM元素连接的挂载点,data是代理数据,在DOM的内容中如果要用到代理数据就用{{xxx}}表示,比如{{list}},{{visibility}},而当data中的代理数据出现在DOM标签里的时候就不需要用花括号。
new Vue({
el: ".main",
data: {
list:list,
things:"",
editItem:"",
beforeTitle:"",
visibility:"all",
inputId:"",
}
})
Vue要用大的方法都放在methods部分
methods: {
addTodo(ev){
if(this.things !== ""){
var item = {
title:this.things,
isChecked:false,
}
this.list.push(item)
}
this.things = "";
},
deleteTodo(item){
var index = this.list.indexOf(item);
this.list.splice(index,1);
},
editTodo(item){
this.beforeTitle = item.title;
this.editItem = item
},
edited(item){
this.editItem = ""
},
cancel(item){
item.title = this.beforeTitle;
this.editItem = "";
this.beforeTitle = ""
}
}
还有计算属性
computed:{
unCheckedLength(){
return this.list.filter(function(item){
return item.isChecked == false
}).length
},
filteredList(){
return filter[this.visibility] ? filter[this.visibility](this.list) : list
}
}
观察属性
watch:{
list:{
handler:function(){
store.save("todolist",this.list)
},
deep:true
}
}
自定义属性
directives:{
"focus":{
update(el,binding){
if(binding.value){
el.focus()
}
}
}
}
在HTML中要绑定这些数据,Vue也提供了一套指令:
v-bind绑定一个或多个特性,一般用于绑定class和style, v-on 绑定事件, v-show,v-if都是根据条件渲染元素,v-for是渲染列表…等等,我就不一一赘述了。可以去Vue中文官网看,讲的很详细。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Vue
# Todo
# List
# vue.js实例todoList项目
# Vue.js实现一个todo-list的上移下移删除功能
# vue2的todolist入门小项目的详细解析
# 基于vuejs实现一个todolist项目
# vue实现todolist单页面应用
# vue实现ToDoList简单实例
# 利用vue写todolist单页应用
# Vue.js实现简单ToDoList 前期准备(一)
# 用vue的双向绑定简单实现一个todo-list的示例代码
# 绑定
# 要用
# 未完成
# 都是
# 我就
# 就会
# 还没有
# 放在
# 多个
# 在这
# 在此
# 就不
# 出现在
# 会在
# 它是
# 这是一个
# 要做
# 自定义
# 还不错
# 就用
相关文章:
如何在IIS管理器中快速创建并配置网站?
小建面朝正北,A点实际方位是否存在偏差?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
家庭建站与云服务器建站,如何选择更优?
制作表格网站有哪些,线上表格怎么弄?
MySQL查询结果复制到新表的方法(更新、插入)
香港服务器网站推广:SEO优化与外贸独立站搭建策略
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Android滚轮选择时间控件使用详解
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
网站制作网站,深圳做网站哪家比较好?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
ppt制作免费网站有哪些,ppt模板免费下载网站?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
如何选择域名并搭建高效网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何零成本快速生成个人自助网站?
如何彻底删除建站之星生成的Banner?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
Thinkphp 中 distinct 的用法解析
建站之星如何快速解决建站难题?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
内网网站制作软件,内网的网站如何发布到外网?
,怎么用自己头像做动态表情包?
如何自定义建站之星模板颜色并下载新样式?
制作销售网站教学视频,销售网站有哪些?
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何通过.red域名打造高辨识度品牌网站?
如何通过WDCP绑定主域名及创建子域名站点?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
如何快速生成可下载的建站源码工具?
网站制作壁纸教程视频,电脑壁纸网站?
公司门户网站制作流程,华为官网怎么做?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
专业商城网站制作公司有哪些,pi商城官网是哪个?
宝塔Windows建站如何避免显示默认IIS页面?
如何快速搭建响应式可视化网站?
如何高效利用亚马逊云主机搭建企业网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
广东企业建站网站优化与SEO营销核心策略指南
图册素材网站设计制作软件,图册的导出方式有几种?
如何构建满足综合性能需求的优质建站方案?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何通过VPS建站实现广告与增值服务盈利?
建设网站制作价格,怎样建立自己的公司网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。