利用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的列表拖动排序实现代码
Oct 01 Javascript
JavaScript Array对象扩展indexOf()方法
May 09 Javascript
jQuery中attr()方法用法实例
Jan 05 Javascript
jQuery插件制作之全局函数用法实例
Jun 01 Javascript
JS插件overlib用法实例详解
Dec 26 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
May 10 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
May 12 Javascript
vue 组件 全局注册和局部注册的实现
Feb 28 Javascript
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
JS使用数组实现的队列功能示例
Mar 04 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 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代码
2007/03/08 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
js 操作select相关方法函数
2009/12/06 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
vue的for循环使用方法
2019/02/12 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
机械设计及其自动化专业推荐信
2013/10/31 职场文书
初三班主任寄语大全
2014/04/04 职场文书
个人投资计划书
2014/05/01 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
无房证明样本
2015/06/17 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书