iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0

聽完Vue的介紹後,既然這麼好用,趕緊回到家,利用Vue來練習toDoList:
https://ithelp.ithome.com.tw/upload/images/20200921/20130654U2IADHwDDn.jpg
因為框架的原因,寫起來十分得心應手。在代辦事項及完成事項來說,只需要透過v-model及v-for渲染我的畫面即可,我不用再去想著Real DOM的問題。HTML有如模板一樣,一次渲染出來,乾淨俐落如下:
代辦事項部分:

<tbody>
       <tr v-for="(item,index) in toDoItem" :key="index">
            <td>{{index+1}}</td>
             <td>{{item}}</td>
             <td><button 
             id="deleteStyle" 
             @click="removetoDoHandler(index)">刪除</button>
             <button 
             id="fixed"
             @click="fixedItem(index)">修改</button>
             <button 
             id="finished"
             @click="finishedHandler(index)">完成</button>
             </td>
        </tr>
</tbody>

完成事項部分:

<tbody>
       <tr v-for="(item,index) in finishedItem" :key="index">
              <td>{{index+1}}</td>
              <td>{{item}}</td>
              <td><button 
              id="deleteStyle" 
              @click="removeFinishdHandler()">刪除</button>
              <button 
              id="notFinished" 
              @click="backToDoList(index)">未完成</button></td>
       </tr>
</tbody>

上述為Vue模板部分,至於供給模板的資料全都放在data屬性:

data() {
            return {
                inputText: '',
                toDoItem: [],
                finishedItem: [],
        }
}

對於使用的方法,也全都存在methods屬性中:

methods: {
            addNewItem() {
                this.toDoItem.push(this.inputText)
                this.inputText = ''
            },
            removetoDoHandler(index) {
                this.toDoItem.splice(index, 1)
            },
            removeFinishdHandler(index) {
                this.finishedItem.splice(index, 1)
            },
            fixedItem(index) {
                const newItem = prompt("修改代辦事項",this.toDoItem[index])
                if (newItem) {
                    this.toDoItem.splice(index, 1)
                    this.toDoItem[index] = newItem
                    alert("修改完成:" + newItem)
                }
            },
            finishedHandler(index) {
                this.finishedItem.push(this.toDoItem[index])
                this.toDoItem.splice(index, 1)
            },
            backToDoList(index) {
                this.toDoItem.push(this.finishedItem[index])
                this.finishedItem.splice(index, 1)
            }
 }

對於Vue這套框架,雖然自己實作一次,但我還有好多東西想去了解呢~就讓我明天再去找Vue來詢問吧!

待續......


上一篇
Day06-Virtual DOM與畫面渲染(二:效能探討)
下一篇
Day08-利用Computed&Filter屬性
系列文
與Vue相遇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言