vue实现ToDoList简单实例


Posted in Javascript onFebruary 07, 2017

一、需求与准备

1、准备

使用bootstrap实现页面的基础样式(依赖jquery),使用vue实现功能需要

2、功能需求

1)、表单实现输入任务清单后加入到展示项中
2)、点击删除按钮弹出警告框询问是否删除(bootstarp模态框插件)
3)、确定删除时,删除对应项(单项删除,全部删除)
4)、任务列表为空时,显示“数据为空” v-show

二、实例

1、静态页面

demo使用bootstrap来快速搭建页面

1)、表单组件:
.form, form-group, form-control
2)、模态框:
样式类:.modal,modal-content,modal-header,modal-body,modal-footer
触发模态框:data-toggle=”modal”,data-target=”模态框ID”
取消模态框:data-dismiss=”true”
2、功能实现
1)、表单数据:
v-model(数据绑定),v-on:click=”fun()”(绑定事件),v-for=”value in dataArr”(遍历),
2)、添加任务
思路:通过v-model绑定数据到vue实例中(timeStamp,taskItem用于暂存数据),点击提交时,在事件响应函数内向任务列表数组内添加提交的数据后,再清空用于存放数据的timeStamp,taskItem。
3)、删除任务
在vue实例中的methods属性上添加事件响应函数,在data中定义targetIndex以存放点击的按钮索引,遍历时,绑定点击事件v-on:click=”targetIndex=$index”,点击时根据targetIndex的值,删除对应索引的数据。
4)、删除全部
绑定删除全部按钮事件,targetIndex=-2,在删除响应除数内通过判断确定是部分删除还是全部删除。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>留言板</title>
 <script src="../vendor/jquery-1.7.2.js"></script>
 <script src="../vendor/bootstrap.js"></script>
 <link href="../vendor/bootstrap.min.css" type="text/css" rel="stylesheet"/>
 <script src="../vendor/vue/dist/vue.js"></script>
</head>
<body>
 <div class="container" id="box">
  <form >
   <div class="form-group">
    <label for="timeStamp">时间</label>
    <input type="datetime" id="timeStamp" v-model="timeR" name="timeStamp" class="form-control">
   </div>
   <div class="form-group">
    <label for="todoItem" class="">任务</label>
    <input type="text" id="todoItem" name="todoItem" v-model="taskItem" class="form-control">
   </div>
   <div class="form-group">
    <button class="btn btn-success" v-on:click="add()" type="button">添加</button>
    <button class="btn btn-danger" type="submit">重置</button>
   </div>
  </form>
  <table class="table table-bordered text-center">
   <caption><h3>任务清单</h3></caption>
   <tr >
    <th class="text-center">序号</th>
    <th class="text-center">时间</th>
    <th class="text-center">任务</th>
    <th class="text-center">操作</th>
   </tr>
   <tr v-for="value in taskList">
    <td>{{$index+1}}</td>
    <td>{{value.timeStamp}}</td>
    <td>{{value.task}}</td>
    <td><button class="btn btn-danger" data-toggle="modal" data-target="#alertBox" v-on:click="targetIndex=$index">删除</button></td>
   </tr>
   <tr v-show="taskList.length!=0">
    <td colspan="4" class="text-right"><button class="btn btn-danger" data-toggle="modal" data-target="#alertBox" v-on:click="targetIndex=-2">删除全部</button></td>
   </tr>
   <tr v-show="taskList.length==0">
    <td colspan="4" class="text-muted" >暂无数据......</td>
   </tr>
  </table>
  <div role="dialog" class="modal" id="alertBox">
   <div class="modal-dialog">
    <div class="modal-content">
     <div class="modal-header">提醒:</div>
     <div class="modal-body text-center" v-show="targetIndex>0">
      确定要删除么???
     </div>
     <div class="modal-body text-center" v-show="targetIndex==-2">
      确定要全部删除么??
     </div>
     <div class="modal-footer">
      <button class="btn btn-danger" data-dismiss="modal" v-on:click="deleteFn(targetIndex)">确认</button>
      <button class="btn btn-primary" data-dismiss="modal">取消</button>
     </div>
    </div>
   </div>
  </div>

 </div>
 <script>
  var vm=new Vue({
   el:"#box",
   data:{
    timeR:'',
    taskItem:'',
    targetIndex:-1,
    taskList:[
     {
      timeStamp:'2016-12-03',
      task:'学习学习'
     },
     {
      timeStamp:'2016-12-03',
      task:'代码代码代码'
     }
    ]
   },
   methods:{
    add:function(){
     console.log(this.timeR)
     this.taskList.push({
      timeStamp:this.timeR,
      task:this.taskItem
     });
     this.timeR="";
     this.taskItem="";
    },
    deleteFn:function(index){
     if(index>0){
      this.taskList.splice(index,1)
     }else{
      this.taskList=[]
     }
    }
   }
  })
 </script>
</body>
</html>

补充:

1)、v-on:click的简写形式:@click
2)、在vue中传入事件对象时:$event
3)、事件冒泡(原生:ev.cancelBubble=true,vue中@click.stop=”函数”)
4)、阻止浏览器默认行为:(原生:ev.preventDefault(),vue中@click.prevent=”函数”)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用JQuery 实现AJAX加载XML并解析的脚本
Jul 25 Javascript
JQuery 将元素显示在屏幕的中央的代码
Feb 27 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
基于jquery的用鼠标画出可移动的div
Sep 06 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
Aug 15 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
Jun 03 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
Apr 26 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
JS实现获取当前所在周的周六、周日示例分析
May 11 Javascript
Antd表格滚动 宽度自适应 不换行的实例
Oct 27 Javascript
vue项目中的支付功能实现(微信支付和支付宝支付)
Feb 18 Vue.js
js Canvas绘制圆形时钟教程
Feb 06 #Javascript
JS中静态页面实现微信分享功能
Feb 06 #Javascript
JS日程管理插件FullCalendar中文说明文档
Feb 06 #Javascript
Javascript之深入浅出prototype
Feb 06 #Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
Feb 06 #Javascript
canvas实现图像布局填充功能
Feb 06 #Javascript
canvas实现图像截取功能
Feb 06 #Javascript
You might like
php静态文件返回304技巧分享
2015/01/06 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
jQuery实用基础超详细介绍
2013/04/11 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
python fabric实现远程部署
2017/01/05 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
实习鉴定范文
2013/12/19 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
北京故宫的导游词
2015/01/31 职场文书
考试没考好检讨书
2015/05/06 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL