Vue实现ToDolist

在这里插入图片描述
在这里插入图片描述

<template>
  <div>
    <header>
      <div>LcToDo</div>
      <!-- 绑定回车事件v-model绑定输入框的值 -->
      <input
        type="text"
        id="input"
        @keydown.enter="enterEvent"
        v-model="inputValue"
        placeholder="请输入待办事件"
      />
      <button @click="add">确定</button>
    </header>
    <div class="list">
      <h3><span>正在进行</span><span>0</span></h3>
      <div
        class="todoItem"
        v-for="(item, index) in doingList"
        :key="(item, index).id"
      >
        <input type="checkbox" @click.prevent="checkDone(item.id)" />
        <div>{{ item.concat }}</div>
        <div class="del" @click="del(item.id)">删除</div>
      </div>
    </div>
    <div class="done">
      <h3><span>完成</span><span>0</span></h3>
      <div
        class="todoItem"
        v-for="(item, index) in doneList"
        :key="(item, index).id"
      >
        <input type="checkbox" @click.prevent="checkDone(item.id)" />
        <div>{{ item.concat }}</div>
        <div class="del" @click="del(item.id)">删除</div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      todoList: [],
      inputValue: "",
      isDone: true,
    };
  },
  methods: {
    enterEvent: function(e) {
      //回车案件
      //将数据添加到todoList
      this.todoList.push({
        concat: this.inputValue,
        isDone: false,
        id: this.doingList.length,
      });
      this.sevaData();
      this.inputValue = "";
      // console.log(this.todoList)
    },
    //确定按钮
    add() {
      //将数据添加到todoList
      this.todoList.push({
        concat: this.inputValue,
        isDone: false,
        id: this.doingList.length,
      });
      this.sevaData();
      this.inputValue = "";
    },
    sevaData: function() {
      //将数据保存到本地存储 ,将数组变成字符串
      localStorage.todoList = JSON.stringify(this.todoList);
    },
    checkDone: function(index) {
      console.log(index);
      this.todoList[index].isDone = !this.todoList[index].isDone;
      this.sevaData();
    },
    del(id) {
      this.todoList.splice(id, 1);
      this.todoList.forEach((item, i) => {
        item.id = i;
      });
      this.sevaData();
    },
  },
  computed: {
    //过滤todoList的数据,得到为做好的和已做好的列表
    doingList: function() {
      //没做好的
      let arr = this.todoList.filter(function(item, index) {
        return !item.isDone;
      });
      return arr;
    },
    doneList: function() {
      //做好的
      let arr = this.todoList.filter(function(item, index) {
        return item.isDone;
      });
      return arr;
    },
  },
};
</script>
<style lang="scss" scoped>
.todoItem {
  display: flex;
  .del {
    width: 55px;
    height: 25px;
    background-color: red;
  }
}
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值