重複的事情做多了就變成肌肉記憶,做到數不請就會變反射動作。
在認識了那麼多 Vue 的指令之後,ㄧ定會很想實際的動手做,我們就來做一個產品列表,並把我們之前所學的應用在這個產品列表的功能上。
我們還是使用以 CDN 載入 Vue 的方式來實作頁面,所以別忘了將 Vue.js 載入頁面。
這個實作的前半段和我們之前實作的 TodoList 很像,也趁這個機會複習一下。
在實作之前,同樣的我們先把要實作的功能一一列出來,接這把畫面刻出來,這裡為了示範就沒特別刻畫面請包涵~
<script>
裡創建一個 Vue 的實例,把先將要用到的資料以陣列+物件的格式準備好,再去 HTML 把要綁定好的元素以 Vue 的v-
指令綁定好。@click="addItem(id, name)"
。v-for
將資料遍歷出來,並渲染到頁面上先試著把在data
裡的列表內容選染到頁面,如果這一步成功了,再進行下一步增加的部分。
增加方法的步驟有:
data:{}
已先預備好空的資料格式,利用方法帶參數的方式取得資料的各屬性push()
把拿到的資料放入 lists 中.prevent
id
id
找到 index
? 找到對應的index
就可用splice()
的方法刪除先看看 codepen 的實作結果
再來看看程式碼
html 的部分
<h1>商品列表增加、刪除功能</h1>
<div id="app">
<h3>增加商品</h3>
<div>
ID:<input type="text" v-model="id" /> | Name:<input
type="text"
v-model="name"
/><input type="button" value="Add" @click="addItem" />
</div>
<table>
<thead>
<tr>
<td>Id</td>
<td>Name</td>
<td>Time & Date</td>
<td>Operation</td>
</tr>
</thead>
<tbody>
<tr v-for="item in lists" :key="item.id">
<td>{{ item.id }}</td>
<td v-text="item.name"></td>
<td>{{ item.timeDate}}</td>
<td><a href="" @click.prevent="deleteItem(item.id)">Delete</a></td>
</tr>
</tbody>
</table>
</div>
Vue.js 的部分
const vm = new Vue({
el: '#app',
data: {
id: '',
name: '',
keywords: '',
lists: [
{
id: 1,
name: 'Book',
timeData: new Date(),
},
{
id: 2,
name: 'Ipad',
timeData: new Date(),
},
{
id: 3,
name: 'Smart phone',
timeData: new Date(),
},
],
},
methods: {
addItem: function () {
var item = { id: this.id, name: this.name, timeDate: new Date() };
console.log(item);
this.lists.push(item);
this.id = '';
this.name = '';
// this.id=this.name=''
},
deleteItem: function (id) {
// 用some()來循環,找到會立即中止
// 用迴圈去找index
this.lists.some((item, i) => {
if (item.id == id) {
this.lists.splice(i, 1);
return true;
}
});
// 另一種抓index的方式
// let index = this.lists.findIndex((item) => {
// if (item.id == id) return true;
// });
// console.log(index);
// this.splice(index. 1)
},
},
});
明天我們再來進行搜尋的部分。
每日一句法文有益身心:Il fait beau! --> 以.飛.ㄅㄡ ˋ! --> 天氣真好!