Vue前端高效開發之列表渲染指令
v-for指令
說起列表不得不提起循環,v-for指令便是可以在vue中實現循環的操作。
v-for指令是基於一個數組來重復渲染的指令,通常就用於顯示列表和表格。
語法:
<ul v-for=”(鍵,值,索引) in 數組”>
<li>{{索引}}:{{值}}:{{鍵}}</li>
</ul>
例:
<body> <style> * { margin: 0px; padding: 0px; } ul { list-style: none; } </style> <!--遍歷數據--> <div id="app"> <!--item:鍵--> <!--value:值--> <!--index:下標--> <ul v-for="(item,value,index) in people"> <li>{{index}}:{{value}}:{{item}}</li> </ul> </div> <script src="js/Vue.js"></script> <script> new Vue({ el: "#app", data: { text: "我們的征途是星辰大海!", arr: ["瑪卡巴卡", "唔西迪西", "小點點", "湯姆佈利多", "叮叮車"], people: { id: 1, name: "周潤發", age: 65 } } }) </script> </body>
由例子可以看出,v-for指令不僅可以遍歷字符串,數組,還可以遍歷對象類型,根據鍵值和索引,以列表或者表格形式顯示。
計算屬性
一般在項目開發中,數據往往需要經過一些處理,除瞭利用基本的表達式和過濾器外,還可以使用vue的計算屬性,優化程序以及完成復雜計算。
例:實現模糊篩選以及增加和刪除。
首先通過v-for語句實現表格顯示數據
<table class="table table-hover table-border"> <tr class="info"> <th>編號</th> <th>姓名</th> <th>年齡</th> <th>介紹</th> </tr> <tr v-for="item in lists"> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{{item.age+"歲"}}</td> <td>{{item.show}}</td> </tr> </table>
<script> new Vue({ el: "#app", data: { "lists": [{ "id": 1, "name": "張三", "age": 18, "show": "張三介紹" }, { "id": 2, "name": "李四", "age": 19, "show": "李四介紹" }, { "id": 3, "name": "王五", "age": 20, "show": "王五介紹" }, { "id": 4, "name": "趙六", "age": 21, "show": "趙六介紹" }, { "id": 5, "name": "孫八", "age": 22, "show": "孫八介紹" }] } </script>
使用計算屬性實現模糊查詢
<p><input type="text" v-model="selectkey" placeholder="請輸入"></p>
computed: { newlist: function() { var _this = this; return _this.lists.filter(function(val) { return val.name.indexOf(_this.selectkey) != -1; }) } }
把計算屬性以函數形式寫到computed選項中,將v-for語句遍歷的集合改為篩選後的newlist集合,通過判斷字符串中是否存在子字符串篩選lists集合中的數據,再把篩選後的數據交給v-for遍歷顯示。
實現添加及刪除
<p class="input-group"> <span class="input-group-addon">編號:</span> <input type="text" v-model="id" placeholder="請輸入編號" class="form-control"> </p> <p class="input-group"> <span class="input-group-addon">姓名:</span> <input type="text" v-model="name" placeholder="請輸入姓名" class="form-control"> </p> <p class="input-group"> <span class="input-group-addon">年齡:</span> <input type="text" v-model="age" placeholder="請輸入年齡" class="form-control"> </p> <p class="input-group"> <span class="input-group-addon">信息:</span> <input type="text" v-model="show" placeholder="請輸入信息" class="form-control"> </p> <p class="input-group"> <button @click="add()" class="btn btn-primary">添加信息</button> </p>
<td> <button v-on:click="dels(item.id)" class="btn btn-primary">刪除</button> </td>
methods: { add: function() { var girl = { "id": this.id, "name": this.name, "age": this.age, "show": this.show } this.lists.push(girl); }, dels: function(o) { //刪除的是下標,刪除幾個 for (let i = 0; i < this.lists.length; i++) { if (this.lists[i].id == o) { this.lists.splice(i, 1); } } } }
通過methods綁定事件,添加兩個按鈕事件方法add和dels用於處理添加和刪除操作。
添加就是使用push方法添加,刪除這裡的splice方法僅能通過下標刪除,而傳過來的值是id所以這裡為瞭確保正確性就需要循環判斷下標,進行刪除操作。
這就是計算屬性。用於處理數據。
監聽屬性
vue除瞭計算屬性還提供瞭監聽屬性用於處理數據,用於觀察數據變動。
不同的是監聽屬性需要有兩個形參,一個是當前值,一個是更新後的值。
例:
watch: { first: function (val) { this.full = val + ' ' + this.last }, last: function (val) { this.full = this.first + ' ' + val } }
相比於監聽屬性,明顯計算屬性會優於監聽屬性,所以在非特殊情況下,還是推薦優先使用計算屬性。
總結
到此這篇關於Vue前端高效開發之列表渲染指令的文章就介紹到這瞭,更多相關Vue列表渲染內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Vue+Bootstrap實現簡易學生管理系統
- jquery實現員工管理註冊頁面
- Vue中搭配Bootstrap實現Vue的列表增刪功能
- vue 動態添加el-input的實現邏輯
- vue中實現可編輯table及其中加入下拉選項