Vue完成TodoList案例


寫一個簡單的TodoList的更實用(文末有彩蛋)。

一,使用VUE-CLI腳手架快速搭建一個框架

利用VUE-CLI來自動生成我們項目的前端目錄及文件,方法:

npm install -g vue-cli
vue init webpack my-project
cd my-project
npm install
npm run dev

這樣我們的一個基於的WebPack的VUE項目目錄就可以快速構建好了。
目錄如下:

目錄

二,完成一個簡單的TodoList的

接下來就看一下webpack.base.conf文件,這是核心文件,必須執行的文件,這里可以看到入口和輸出,這就是入口和輸出路徑,在入口處看到了./src/main.js, Main.js .v ue ve,並加載了.v .v App.vue,的確列表.v .v .v .v .v App.vue的

簡單的TodoList的我們可以完成這幾個功能:

1、顯示todo列表
2、判斷列表任務完成狀態,若完成則添加相應的樣式
3、在輸入框中動態添加todo項目,點擊回車在列表中顯示
4、點擊相應的項目轉換狀態
  • 首先我們完成顯示列表的功能:
<template>
  <div id="app">
    <input/>
    <ul>
      <li v-for="item in items">
        {{item.label}}
      </li>
    </ul>
  </div>
</template>

<script>
  export default {
    data () {
      return {
        items: [
          {
            label: 'read books',
            isFinished: false
          },
          {
            label: 'eat dinner',
            isFinished: true
          }
        ]
      }
    }
  }
</script>
效果

export后面的對象,作為作為new vue()的參數,來創建一個Vue的組件,並導出。

  • 判斷任務的完成狀態,完成則添加文字修飾樣式
    官方文檔中我們可以看到:


     
    綁定類樣式

    如果V-結合中類后是一個對象的話,鍵代表添加的類的名稱,值值代表一個布爾值,用來控制這個類屬性的有無。
    所以我們就可以這樣:

<template>
  <div id="app">
    <input/>
    <ul>
      <li v-for="item in items" v-bind:class={finished:item.isFinished}>
        {{item.label}}
      </li>
    </ul>
  </div>
</template>

<script>
  export default {
    data () {
      return {
        items: [
          {
            label: 'read books',
            isFinished: false
          },
          {
            label: 'eat dinner',
            isFinished: true
          }
        ]
      }
    }
  }
</script>

<style>
  .finished {
    text-decoration: line-through;
  }
</style>
 
效果
  • 在輸入框中填寫項,回車點擊完成添加列表並顯示同時清空輸入框內容
    用到的知識:


     
    監聽回車

     
    表單控件監聽
<template>
  <div id="app">
    <input v-on:keyup.enter="addNewItem" v-model="newItem"/>
    <ul>
      <li v-for="item in items" v-bind:class={finished:item.isFinished}>
        {{item.label}}
      </li>
    </ul>
  </div>
</template>

<script>
  export default {
    data () {
      return {
        items: [
          {
            label: 'read books',
            isFinished: false
          },
          {
            label: 'eat dinner',
            isFinished: true
          }
        ],
        newItem: ''
      }
    },
    methods: {
      addNewItem () {
        this.items.push({label: this.newItem,isFinished: false})
        this.newItem = ''    //清空輸入框
      } 
    }
  }
</script>

<style>
  .finished {
    text-decoration: line-through;
  }
</style>

 

  • 進行內容點擊狀態轉換
    在李標簽上綁定一個單擊事件,點擊時修改isFinished
//添加代碼
 <li v-for="item in items" v-bind:class={finished:item.isFinished} v-on:click="finish(item)">
        {{item.label}}
 </li>

methods: {
 finish (item) {
        item.isFinished = !item.isFinished
   }
}

 

這樣一個簡單的TodoList的的基本功能已經完成。


 
動圖效果


 

 

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM