利用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 实现复制(Copy)动作方法大全
Jun 20 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
Aug 20 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
Aug 24 Javascript
JS实现的自定义水平滚动字体插件完整实例
Jun 17 Javascript
AngularJS中的包含详细介绍及实现示例
Jul 28 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
js闭包用法实例详解
Dec 13 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
Jun 13 Javascript
简单谈谈axios中的get,post方法
Jun 25 Javascript
利用Vue实现移动端图片轮播组件的方法实例
Aug 23 Javascript
详解vue几种主动刷新的方法总结
Feb 19 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
Google韩国首页图标动画效果
2007/08/26 Javascript
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
再谈JavaScript线程
2015/07/10 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
创建简单的node服务器实例(分享)
2017/06/23 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
python设置检查点简单实现代码
2014/07/01 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
生物制药毕业生自荐信
2013/10/16 职场文书
企业总经理职责
2014/02/02 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
校庆标语集锦
2014/06/25 职场文书
鸟的天堂导游词
2015/01/31 职场文书
一般纳税人申请报告
2015/05/18 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
Python实现聚类K-means算法详解
2022/07/15 Python