Vue學習從入門到精通(三)
阿新 • • 發佈:2018-12-31
這一篇文章主要說一下Vue對陣列的各種操作。在說Vue之前,我們先了解一下javascript
中對陣列操作的常見函式。
函式 | 說明 |
---|---|
push() | 在陣列的末尾新增一個新的元素 |
pop() | 在陣列的末尾刪除掉一個元素 |
shift() | 刪除陣列的第一個元素 |
unshift() | 插入一個元素作為陣列的第一個元素 |
splice() | 功能比較強大,可以實現插入,刪除,替換等操作。 |
sort() | 對字串,字元,數字有效果,主要是按照ascii碼升序排序,別的型別的元素,不支援,不過我們可以重寫該方法進行相關的排序操作,該操作會改變原來的陣列 |
reverse() | 對字串,字元,數字有效果,主要是按照ascii碼降序排序,別的型別的元素,不支援,不過我們可以重寫該方法進行相關的排序操作,該操作會改變原來的陣列 |
splice用法靈活多變,這裡重點說一下。語法如下:
arrayObject.splice(index,howmany,item1,.....,itemX)
引數 | 描述 |
---|---|
index | 必需。整數,規定新增/刪除專案的位置,使用負數可從陣列結尾處規定位置 |
how many | 必需。要刪除的專案數量。如果設定為 0,則不會刪除專案 |
item1,…,itemx | 可選。向陣列新增的新專案 |
Vue對這些方法進行了重寫,每次對使用這些方法對陣列進行操作後,就會觸發檢視的重新整理。驗證程式碼如下:
<template>
<div class="hello">
<button @click="addItem">增加</button>
<button @click="deleteItem">刪除</button>
<button @click="shiftOperation">shift操作</button>
<button @click ="unshiftOperation">unshift操作</button>
<button @click="spliceOperation">splice操作</button>
<button @click="sortOperaton">sort操作</button>
<ul>
<li v-for="user in list">
<span>{{user.nickName}}</span>**
<span>{{user.age}}</span>
</li>
</ul>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data () {
return {
list: [
{nickName: '張三', age: 50},
{nickName: '李四', age: 20},
{nickName: '王五', age: 5},
{nickName: '趙六', age: 45}
]
}
},
methods: {
addItem () {
// 這裡對資料進行操作
this.list.push({nickName: '老頭', age: 90})
},
deleteItem (){
this.list.pop()
},
shiftOperation (){
this.list.shift()
},
unshiftOperation (){
this.list.unshift({nickName: '路人', age: 30})
},
spliceOperation (){
this.list.splice(2, 1, {nickName: '帥哥', age: 45})
},
sortOperaton (){
this.list.sort(function(a, b){
var age1 =a.age;
var age2 = b.age;
return age1 -age2;
})
}
}
}</script>
<style scoped>h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
margin: 0 10px;
}
a {
color: #42b983;
}
.top {
margin: auto;
width: 200px;
height: 100px;
background: #f56868;
}</style>
本來想給大家錄gif的,但是好像錄不上,大家感興趣的話,可以自己驗證下哦。
但是呢由於javaScript的限制,Vue.js不能檢測到下面陣列的變化。
直接使用索引設定元素,如vm.items[0] = {}
修改資料的長度,如vm.items.length = 0
針對這種情況,Vue.js中可以使用set()
,和remove()
這兩個函式,具體操作如下:
this.list.set(1,item)
this.list.remove(item)
其中item分別為要替換和,要移除的元素。