Vue.저는 js로 Todo 리스트를 만들었어요.

8431 단어 Vue.js

입문


Vue.왜냐하면 Js가 공부를 시작한 지 2주 정도 지났어요. Todo 리스트를 만들어봤어요!

작법


Vue.js에는 몇 가지 쓰기 방법이 있습니다. 이번에는 HTML, Javascript 파일로 나누어 쓰고 싶습니다.

카탈로그 트리

root/
 ┝ index.html
 └  javascript/
  └ app.js

HTML 코드


index.html
<!DOCTYPE html>
<html lang="ja">
<head>
 <title>Todoリスト</title>
 <!-- CDNにてVue.jsを導入 -->
 <script src="https://unpkg.com/[email protected]"></script>
</head>
<body>
 <div id="app">
    <!-- 新しいタスクの入力フォーム -->
    <input type="text" placeholder="新しいタスク" v-model="newTask">
    <input type="submit" value="追加" @click="addTask">

    <!-- 達成率を表示 -->
    達成数: {{ completedTasks }} / {{ totalTasks }}

    <!-- タスクの一覧 -->
    <ul>
      <li v-for="(task, index) in tasks" :key="task.title">
      {{ task.title }}
      <button v-if="task.done" @click="completed(index)">完了</button>
      <label v-else>完了済み</label>
      <button @click="deleteTask(index)">削除</button>
      </li>
    </ul>
  </div>
  <script src="javascript/app.js"></script>
</body>

Javascript 코드


app.js
const tasks = [
  {
    title: 'sample',
    done: false
  }
]

var app = new Vue({
  el: "#app",
  data: {
    tasks: tasks,
    newTask: null
  },
  methods: {
    completed: function(index) {
      this.tasks[index].done = true
    },
    addTask: function() {
      if(newTask){
        this.tasks.push({ title: this.newTask, done: false })
        this.newTask = null
      }
    },
    deleteTask: function(index) {
      this.tasks.splice(index, 1)
    }
  },
  computed: {
    completedTasks: function() {
      var count = 0
      for(let i = 0; i < this.tasks.length; i++){
        if(this.tasks[i].done){
          count++
        }
      }
      return count
    },
    totalTasks: function() {
      return this.tasks.length
    }
  }
})

실행 결과


첫 번째 화면

완료 버튼을 누르면

나머지 작업 생략

총결산


이번에는 CDN으로 간단하게 Vue.js를 가져오고 Todo 목록을 만들었습니다.
앞으로 VueCLI를 사용하여 가져오고 단일 파일로 응용 프로그램을 만들려고 합니다.

좋은 웹페이지 즐겨찾기