利用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 相关文章推荐
JavaScript修改css样式style动态改变元素样式
Dec 16 Javascript
JS+CSS实现简易的滑动门效果代码
Sep 24 Javascript
基于jquery实现全屏滚动效果
Nov 26 Javascript
jQuery实现的简单提示信息插件
Dec 08 Javascript
D3.js实现折线图的方法详解
Sep 21 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
JS实现图片高斯模糊切换效果的焦点图实例
Jan 21 Javascript
jQuery响应滚动条事件功能示例
Oct 14 jQuery
node上的redis调用优化示例详解
Oct 30 Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 Javascript
es6中reduce的基本使用方法
Sep 10 Javascript
JS this关键字在ajax中使用出现问题解决方案
Jul 17 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
PHP 面向对象详解
2012/09/13 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
基于php实现的验证码小程序
2016/12/13 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
用Eclipse写python程序
2018/02/10 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
jupyter notebook 重装教程
2020/04/16 Python
python logging通过json文件配置的步骤
2020/04/27 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
C语言笔试题
2014/09/04 面试题
机电一体化毕业生求职信
2013/11/02 职场文书
设计部经理的岗位职责
2013/11/16 职场文书
计算机网络专业求职信
2014/06/05 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
python实现简单区块链结构
2021/04/25 Python
python使用glob检索文件的操作
2021/05/20 Python
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers