利用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 相关文章推荐
复制本贴标题和地址的js代码
Jul 01 Javascript
获取HTML DOM节点元素的方法的总结
Aug 21 Javascript
document.getElementById为空或不是对象的解决方法
Jan 24 Javascript
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
漫谈JS引擎的运行机制 你应该知道什么
Jun 15 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
JS实现留言板功能
Jun 17 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
JavaScript 通过Ajax 动态加载CheckBox复选框
Aug 31 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
利用PHP实现短域名互转
2013/07/05 PHP
用PHP代码给图片加水印
2015/07/01 PHP
为你总结一些php系统类函数
2015/10/21 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
python nmap实现端口扫描器教程
2020/05/28 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
交通安全寄语大全
2014/04/08 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
大学毕业生个人总结
2015/02/28 职场文书
学校捐书倡议书
2015/04/27 职场文书
医院员工辞职信范文
2015/05/12 职场文书
民事答辩状范本
2015/05/21 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
在js中修改html body的样式
2021/11/11 Javascript
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js