利用vue写todolist单页应用


Posted in Javascript onDecember 15, 2016

网上有很多关于vue的todolist小程序。大多是利用vue-cli脚手架工具开发的,这个官网的文档也不支持新手从单文件开始学习。所以用大家熟悉的开发方式写了这个todolist,希望和大家一起学习。

1、vue是啥?
Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架。简单说是一个模板引擎,做过后端的应该很清楚,以前靠服务器端渲染的dom,放在浏览器端端渲染,vue拿到数据渲染成dom.当然vue不仅仅是用来干这个的,数据驱动,数据双向绑定,赋予了用户很好的体验,以及快速的开发,应用的项目的益于维护等。。

2、下面开始代码吧,提前引入vue.js,以及bootstrap。由于没采用vue单文件开发。所以只有一个html文件.

3、为了方便你可以使用cdn来引入你需要的文件。demo使用了localstorage来存放数据。所以你必须开启web端口来浏览。未了方便你可以使用webstorm来开发。否则你直接打开静态页是不能存取数据的。当然这些数据你可以换成从数据库来处理

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>vue版todolist</title>
  <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
  <script src="src/vue.js"></script>
</head>
<style>
  .isFinish {
    background-color: #d58512 !important;
  }

  .itemcount {
    display: block;
    width: 20px;
    height: 20px;
    text-align: center;
    line-height: 20px;
    border-radius: 10px;
    float: left;
    background-color: #d9edf7;
  }
</style>
<body>
<div class="container text-center" id="app">

  <h2>{{title}}</h2>
  <div class="row">
    <div class="col-md-7">
      <form class="form-horizontal" role="form">
        <div class="form-group">
          <label for="toitem">添加任务事项</label>
          <input class="form-control" type="text" id="toitem" v-model="newitem" @keyup.enter="addItem()">
        </div>
        <!--  <div class="form-group text-left">
            <button class="btn btn-primary btn-sm">确认添加</button>
          </div>-->
        <div class="list-group text-left form-group" style="margin-top: 2em;">
          <a href="#" class="list-group-item active text-left">
            任务清单:
          </a>

          <a href="#" v-for="item in items" class="list-group-item" v-on:click="toogleFinsih(item)">
            <span class="itemcount">{{item.id}}</span>
            {{item.lable}}
            <span class="badge" v-bind:class="{isFinish:item.isFinish}">√</span>
          </a>

        </div>
      </form>
    </div>
    <div class="col-md-5">
      <div class="panel panel-default">
        <div class="panel-heading">任务计划:</div>
        <div class="panel-body">
          请在一周内完成这些计划!
        </div>
        <div class="panel-footer text-right">
          <button class="btn btn-info btn-sm" @click="clearItem">清空任务计划</button>
        </div>
      </div>
    </div>
  </div>
</div>
<script>
  //该网站的localStorage的键值,用于存放数据
  var todoList = 'todolist';
  //对localStorage的封装
  var lsp = (function () {
    return ({
      add: function (dataval) {
        //添加数据,键为todolist
        localStorage.setItem(todoList, JSON.stringify(dataval));
      },
      get: function () {
        //读取键为todolist的数据
        return JSON.parse(localStorage.getItem(todoList));
      },
      remove: function () {
        //移除该站点下键为todolist的数据
        localStorage.removeItem(todoList);
      },
      clear: function () {
        //清空该站点下的所有localStorage的数据
        localStorage.clear();
      }
    });
  })();
  var app = new Vue({
    el: '#app',
    data: {
      title: '任务清单demo',
      items: lsp.get() || [],//读取数据。如果没有数据赋值为数组[]
      newitem: '' //要添加的数据
    },
    methods: {
      addItem: function () {
        var that = this;
        this.items.push({
          id: that.items.length + 1,
          lable: that.newitem,
          isFinish: false
        });
        lsp.add(this.items);
        this.newitem = '';
      },
      toogleFinsih: function (item) {
        item.isFinish = !item.isFinish;
      },
      clearItem: function () {

        this.items = [];

      }
    }
  })
</script>
</body>

</html>

github:demo

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

Javascript 相关文章推荐
jquery中交替点击事件toggle方法的使用示例
Dec 08 Javascript
使用GruntJS构建Web程序之安装篇
Jun 04 Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
May 16 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
Dec 30 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
Sep 27 Javascript
Angularjs按需查询实例代码
Oct 30 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
Jan 30 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
微信小程序实现上拉加载功能
Nov 20 Javascript
jquery插件bootstrapValidator表单验证详解
Dec 15 #Javascript
jQuery中的100个技巧汇总
Dec 15 #Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 #Javascript
详解jQuery中的事件
Dec 14 #Javascript
JS实现鼠标移上去显示图片或微信二维码
Dec 14 #Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
Dec 14 #Javascript
node.js报错:Cannot find module 'ejs'的解决办法
Dec 14 #Javascript
You might like
PHP Document 代码注释规范
2009/04/13 PHP
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
JavaScript定义全局对象的方法示例
2017/01/12 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
python简单商城购物车实例代码
2018/03/15 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
Python实现快速排序的方法详解
2019/10/25 Python
python 写一个水果忍者游戏
2021/01/13 Python
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
大学毕业生简单自荐信
2013/11/05 职场文书
园林设计师自荐信
2013/11/18 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
工作交流会欢迎词
2014/01/12 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android