Detailed explanation of Vue's TodoList case

Detailed explanation of Vue's TodoList case

insert image description here

insert image description here

<template>
  <div id="root">
    <div class="todo-container">
      <div class="todo-wrap">
        <Top :received="received" />
        <List :todos="todos" :checkTodo="checkTodo" :deleteTodo="deleteTodo" />
        <Bottom :todos="todos" :checkAllTodo="checkAllTodo" :clearAllTodo="clearAllTodo" />
      </div>
    </div>
  </div>
</template>
<script>
  import Top from './components/Top.vue'
  import Bottom from './components/Bottom.vue'
  import List from './components/List.vue'
  export default {
    name: 'App',
    components:
      Top,
      List,
      Bottom
    },
    data() {
      return {
        todos: [{
            id: '001',
            title: 'Eating',
            done: true
          },
          {
            id: '002',
            title: 'Sleep',
            done: false
          },
          {
            id: '003',
            title: 'Playing Beans',
            done: false
          },
        ]
      }
    },
    methods: {
      //Add a todo
      received(todoObj) {
        this.todos.unshift(todoObj);
      },
      //Uncheck todo
      checkTodo(id) {
        this.todos.forEach((todo) => {
          //Function bodyif (todo.id === id) todo.done = !todo.done;
        })
      },
      //deleteTodo(id) {
        this.todos = this.todos.filter(todo => todo.id !== id)
      },
      //Select all or deselect all checkAllTodo(done) {
        this.todos.forEach((todo) => {
          todo.done = done
        })
      },
      // Clear all completed data clearAllTodo() {
        this.todos = this.todos.filter((todo) => {
          return !todo.done
        })
      }
    }
  }
</script>
<style lang="css">
  /*base*/
  body {
    background: #fff;
  }
  .btn {
    display: inline-block;
    padding: 4px 12px;
    margin-bottom: 0;
    font-size: 14px;
    line-height: 20px;
    text-align: center;
    vertical-align: middle;
    cursor: pointer;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
    border-radius: 4px;
  }
  .btn-danger {
    color: #fff;
    background-color: #da4f49;
    border: 1px solid #bd362f;
  }
  .btn-danger:hover {
    color: #fff;
    background-color: #bd362f;
  }
  .btn:focus {
    outline: none;
  }
  .todo-container {
    width: 600px;
    margin: 0 auto;
  }
  .todo-container .todo-wrap {
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 5px;
  }
</style>

Summarize

This article ends here. I hope it can be helpful to you. I also hope you can pay more attention to more content on 123WORDPRESS.COM!

You may also be interested in:
  • Vue encapsulates a TodoList example and implements the application of browser local cache
  • Detailed explanation of the simple todolist example of vuex
  • Vue learns parent-child component communication from TodoList
  • Vuejs implements simple todoList function and component example code
  • vue.js example todoList project

<<:  Detailed explanation of flex layout in CSS

>>:  Summary of several principles that should be followed in HTML page output

Recommend

How to use Typescript to encapsulate local storage

Table of contents Preface Local storage usage sce...

What are the advantages of using B+Tree as an index in MySQL?

Table of contents Why do databases need indexes? ...

A brief introduction to MySQL InnoDB ReplicaSet

Table of contents 01 Introduction to InnoDB Repli...

Try Docker+Nginx to deploy single page application method

From development to deployment, do it yourself Wh...

Why do code standards require SQL statements not to have too many joins?

Free points Interviewer : Have you ever used Linu...

Detailed steps for creating a Vue scaffolding project

vue scaffolding -> vue.cli Quickly create a la...

How to deal with too many Docker logs causing the disk to fill up

I have a server with multiple docker containers d...

Detailed explanation of MySQL sql99 syntax inner join and non-equivalent join

#Case: Query employee salary levels SELECT salary...

Detailed explanation of views in MySQL

view: Views in MySQL have many similarities with ...

Nginx Service Quick Start Tutorial

Table of contents 1. Introduction to Nginx 1. Wha...