利用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 相关文章推荐
asp javascript 实现关闭窗口时保存数据的办法
Nov 24 Javascript
javascript eval函数深入认识
Feb 21 Javascript
游览器中javascript的执行过程(图文)
May 20 Javascript
JS实现将人民币金额转换为大写的示例代码
Feb 13 Javascript
基于jQuery实现网页打印功能
Dec 01 Javascript
JS实现Ajax的方法分析
Dec 20 Javascript
JavaScript纯色二维码变成彩色二维码
Jul 23 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 Javascript
React Router v4 入坑指南(小结)
Apr 08 Javascript
Vue组件之单向数据流的解决方法
Nov 10 Javascript
vue实现跳转接口push 转场动画示例
Nov 01 Javascript
jQuery实现二级导航菜单的示例
Sep 30 jQuery
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常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
简单了解python中对象的取反运算符
2019/07/01 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
python中温度单位转换的实例方法
2020/12/27 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
幼儿园中秋节活动方案2013
2014/01/29 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
社区工作者演讲稿
2014/05/23 职场文书
师德师风个人整改措施
2014/10/27 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
邀请函格式范文
2015/02/02 职场文书
质量负责人岗位职责
2015/02/15 职场文书
社区宣传标语口号
2015/12/26 职场文书
Android自定义双向滑动控件
2022/04/19 Java/Android