Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Vue完成一个checklist

使用Vue完成一个checklist

作者头像
zx钟
发布于 2019-07-18 13:52:31
发布于 2019-07-18 13:52:31
99100
代码可运行
举报
文章被收录于专栏:测试游记测试游记
运行总次数:0
代码可运行

创建一个项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ vue init webpack-simple vuedemo01

初始化项目

除了Use sass?选择N,其他默认

根据提示安装依赖并运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cd vuedemo01
$ npm install
$ npm run dev

npm install可以使用淘宝的镜像cnpm

运行结果

使用编辑器打开该文件夹

文件夹

需求

差不多是要完成以下界面

目标

编码

去除App.vue多余部分,剩下如下部分即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div id="app">
    {{msg}}
  </div>
</template>

<script>
export default {
  name: "app",
  data() {
    return {
      msg: "Welcome to Your Vue.js App"
    };
  }
};
</script>

<style>
</style>

当前页面

html部分

包含

  • 一个输入框,
  • 两个h2标签的文字
  • n个无序的项
  • 删除按钮
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div id="app">
    <input type="text">
    <hr>
    <h2>进行中</h2>
    <ul>
      <li>1</li>
    </ul>
    <hr>
    <h2>已完成</h2>
    <ul>
      <li>2</li>
    </ul>
  </div>
</template>

初版

script数据部分

每次输入到输入框的内容需要一个变量来接收

存放的每个内容,以及与其对应的状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
export default {
  name: "app",
  data() {
    return {
      todo: "",
      list: [{ todo: "aa", checked: false }]
    };
  }
};
</script>

为了把数据渲染到页面上,需要修改html部分的li中的内容

使用v-for来循环输出list的索引和内容

使用v-if来判断:

  • 复选框没选中的内容会显示在进行中
  • 复选框选中的内容会显示在已完成
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul>
  <li v-for="(item,key) in list" v-if="!item.checked">
    <input type="checkbox" v-model='item.checked' @change="saveList()">
      {{item.title}} ----- <button>删除</button>
  </li>
</ul>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul>
  <li v-for="(item,key) in list" v-if="item.checked" @change="saveList()">
    <input type="checkbox" v-model='item.checked'> {{item.title}} ----- <button @click='deleteDate(key)'>删除</button>
  </li>
</ul>

函数部分

在说函数部分前,还剩下顶部的输入框还没有增加方法的入口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input type="text" v-model="todo" @keydown='doAdd($event)'>

v-model表明它接收的内容会修改todo

@keydown对应键盘操作

在date部分之后增加methods

image-20190421200514387

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import storage from "./model/storage.js";
export default {
  data() {
    return {
      todo: "",
      list: [{ todo: "aa", checked: false }]
    };
  },
  methods: {
    doAdd(e) {
      if (e.keyCode == 13) { //按键13是回车
        this.list.push({//列表中插入对象
          title: this.todo,
          checked: false
        });
      }
      storage.set("list", this.list);
    },
    deleteDate(key) {
      this.list.splice(key, 1);//删除对应索引的内容
      storage.set("list", this.list);
    },
    saveList() {
      storage.set("list", this.list);
    }
  }
};

这里封装了一个storage.js,用于保存数据至本地,这样下次打开页面还是会恢复至上次关闭的时候。

封装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { loadavg } from "os";

var storage={
    set(key,value){
        localStorage.setItem(key,JSON.stringify(value));
    },
    get(key){
        return JSON.parse(localStorage.getItem(key));
    },
    remove(key){
        localStorage.removeItem(key);
    }
}
export default storage

全代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div id="app">
    <input type="text" v-model="todo" @keydown='doAdd($event)'>
    <hr>
    <br>
    <h2>进行中</h2>
    <ul>
      <li v-for="(item,key) in list" v-if="!item.checked">
        <input type="checkbox" v-model='item.checked' @change="saveList()">
        {{item.title}} ----- <button @click='deleteDate(key)'>删除</button>
      </li>
    </ul>
    <hr>
    <h2>已完成</h2>
    <ul>
      <li v-for="(item,key) in list" v-if="item.checked" @change="saveList()">
        <input type="checkbox" v-model='item.checked'> {{item.title}} ----- <button @click='deleteDate(key)'>删除</button>
      </li>
    </ul>


  </div>
</template>

<script>
  import storage from './model/storage.js'
  export default {
    data() {
      return {
        todo: "",
        list: []
      };
    },
    methods: {
      doAdd(e) {
        if (e.keyCode == 13) {
          this.list.push({
            title: this.todo,
            checked: false
          })
        }
        storage.set('list', this.list)
      },
      deleteDate(key) {
        this.list.splice(key, 1)
        storage.set('list', this.list)
      },
      saveList() {
        storage.set('list', this.list)
      }
    },
    mounted() {
      var list = storage.get('list', this.list);
      if (list) {
        this.list = list
      }
    }
  };
</script>

<style lang="scss"></style>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
6.条件渲染v-if、监听键盘事件$event
 vi-if与v-show用法相同,v-if是代表根据条件渲染,v-show是代表将所有的都渲染出来,根据条件显示。
玩蛇的胖纸
2019/09/29
9660
6.条件渲染v-if、监听键盘事件$event
7.模块化封装Storage实现缓存数据持久化
1.在src目录下新建目录model,在model目录下新建js文件取名storage.js
玩蛇的胖纸
2019/09/29
5500
7.模块化封装Storage实现缓存数据持久化
Vue入门(二)——本地应用
为元素绑定事件,方法内部通过this关键字可以访问定义在data中的数据。简写为@。
matt
2022/10/25
7510
Vue入门(二)——本地应用
Vue常用系统指令
标签将会被替代为对应数据对象上 msg 属性(msg定义在data对象中)的值。无论何时,绑定的数据对象上 msg 属性发生了改变,插值处的内容都会更新。 插值表达式主要展示Vue对象中data中的数据,合法的数据表达式 1直接写变量 2字符串拼接 3数值运算 4三元表达式 5内置函数
羊羽shine
2019/06/13
6660
Vue3.0实现todolist-实现todolist每个组件需要用到的方法
参考文档:https://blog.csdn.net/ll666888999/article/details/123789098 参考视频:https://www.imooc.com/learn/1300 官方文档查看文档:https://v3.cn.vuejs.org/
王小婷
2022/09/28
3100
Vue3.0实现todolist-实现todolist每个组件需要用到的方法
ToDolist案例源码
vue中的ToDolist案例 下面展示一些 内联代码片。 <template> <div id="app"> <nav> <p>TODOlist</p> <input type="text" placeholder="添加ToDo" v-model="value" @keydown.enter="add" /> </nav> <div id="nr"> <h3>正在进行({{nolength}})</h3> <table cl
江一铭
2022/06/16
2640
Vue基础语法(二)
(1)格式:<标签 v-for='(item,index) in 数组名'>{{item}}</标签>
申小兮
2023/05/05
5200
Vue基础语法(二)
用vue脚手架写的简易留言板
1.配置安装好脚手架 2.留言板: <template> <div class="about"> <input type="text" v-model="value" @keydown.enter="add" /> <button @click="add">提交</button> <h1>{{value}}</h1> <h3>未完成({{listno.length}}):</h3> <button @click="dels1(index)">全部删除</butt
江一铭
2022/06/16
6230
[前端学习]从0到1做一个Vue风格的Todolist(Vue牛刀小试)
文章目录 前言 整体的目录结构: App.vue MyHeader.vue MyList.vue MyFooter.vue MyItem.vue 运行效果: 前言 大家好,我是程序员man
Maynor
2021/12/07
2680
[前端学习]从0到1做一个Vue风格的Todolist(Vue牛刀小试)
(24)打鸡儿教你Vue.js
1、使用Vue2.0版本实现响应式编程 2、理解Vue编程理念与直接操作Dom的差异 3、Vue常用的基础语法 4、使用Vue编写TodoList功能 5、什么是Vue的组件和实例 6、Vue-cli脚手架工具的使用 7、但文件组件,全局样式与局部样式
达达前端
2019/07/08
4020
Vue第二天
小城故事
2024/08/24
920
2020前端技术面试必备Vue:(一)基础快速学习篇
本章节,我将带领大家一起刷Vue 技术点,来应对接下来的面试,此次会陆续更新Vue全家桶:Vue VueX Vue-Router ;以及后面时间充足的话,来实现一个Vue项目。
程序员海军
2021/10/11
2K0
2020前端技术面试必备Vue:(一)基础快速学习篇
vue 构建 todo 项目系列1
todo 即个人事务管理项目,很适合 vue 练手,本系列课程将从零开始演示如何用 vue 构建一个简易的 todo 项目
章鱼喵
2019/10/15
9250
vue checkbox list 增删改
<template>   <div class=”hello”>     <div style=”display:flex;”>       <span @click=”test($event,index);cur=index” v-for=”(item,index) in obj” :key=”item.name” >         <input v-model=”list” type=”checkbox” :label=’item.name’ :value=”item.name” >         
kirin
2021/01/07
5560
Todo List: 新增编辑任务,localStorage + Vuex实现本地存储 – 第二章
在第一章中,我们的Todo List已经初现锥形,本章节我们对页面优化,同时让数据实现本地存储。主要用到localStorage + Vuex来实现页面交互和存储功能。
Javanx
2019/09/04
7120
Todo List: 新增编辑任务,localStorage + Vuex实现本地存储 – 第二章
(第一季)Vue2.0-内部指令
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
楠楠
2018/09/11
7880
(第一季)Vue2.0-内部指令
Vue 实战中的一些小魔法
路由懒加载可以让我们的包不需要一次把所有的页面的加载进来,只加载当前页面的路由组件就行。
逆锋起笔
2021/06/11
6440
Vue模板语法
我们知道vue中data数据改变的时候,页面元素的数据也会改变。但是,在某些情况下,我们可能不希望界面随意的跟随改变,这个时候,我们就可以使用一个Vue的指令。
说故事的五公子
2022/05/09
3.2K0
Vue模板语法
Vue2学习计划五:v-on、v-model、v-if、v-for和v-show
我们前面学习了,{{}}和v-bind,这两货可以让我们将Vue实例中的数据绑定到DOM中。那么,产品经理又开始有奇怪的需求了,比如我们要点击按钮更换图片怎么办?怎么办呢?我们目前只会将数据绑定到DOM上,如何监听DOM里的事件,然后作用到Vue实例数据上呢?别急,这正是今天要学的v-on的主场。
松鼠先生
2022/02/22
4.3K0
Vue2学习计划五:v-on、v-model、v-if、v-for和v-show
学习 Vue 3 全家桶 - Vite 和 Composition API
如果在一个页面里有多个功能,那就需要在 data 和 methods 里分别进行配置。但这样的话,数据和方法相关的代码会写在一起,在组件代码行数多了后就不好维护。可以使用 Composition API 的逻辑来拆分代码,把一个功能相关的数据和方法都维护在一起。
Cellinlab
2023/05/17
4260
学习 Vue 3 全家桶 - Vite 和 Composition API
相关推荐
6.条件渲染v-if、监听键盘事件$event
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验