基本指令
- v-cloak 用在載入緩慢的時候解決使用者體驗不好的問題,比如{{}}用法可能自渲染之前要一直顯示為{{msg}}。會在Vue編譯結束之後再去渲染{{msg}},一般與
display:none;
結合使用。
[v-cloak]{
display:none;
}
複製程式碼
<div v-cloak>{{msg}}{/div}
複製程式碼
- v-once 指定的元素和元件只會渲染一次,在控制檯進行更改其內容頁面也不會發生改變。
條件渲染指令
- v-if / v-else 只有在條件為真的時候才會進行渲染,在不滿足條件的時候就不會被渲染。用法很簡單,直接來一個栗子。
<div id="app">
<p v-if='one>three'>{{one}}</p>
<p v-else>{{two}}</p>
</div>
複製程式碼
var app = new Vue({
el:'#app',
data:{
one:1,
two:2,
three:3
}
})
複製程式碼
這樣在頁面上渲染出來的就是2啦。
v-if出於效率考慮,會盡可能的複用已有的元素而不是重新渲染,比如input框中的內容。為此需要給元素加上唯一的key。
- v-show 其用法與v-if類似,不過v-show只是簡單的切換css的display屬性,即渲染之後一直存在。
具體區別點此檢視。
列表渲染指令 v-for
- 遍歷陣列的多個物件:
<ul>
<li v-for="key in obj">
{{key.value}}
</li>
</ul>
複製程式碼
var app = new Vue({
el:"app",
data:{
obj:[
{value: 'one'},
{value:'two'},
{value:"three"}
]
}
})
複製程式碼
我們還可以得到它的index值,具體寫法為:
<ul>
<li v-for="(key,index) in obj">
{{index}} -- {{key.value}}
</li>
</ul>
複製程式碼
渲染出的效果如圖所示。
2. 遍歷一個物件的多個屬性:<ul>
<li v-for="key in obj">
{{key}}
</li>
</ul>
複製程式碼
var app = new Vue({
el: '#app',
data:{
obj:{
age1: 18,
age2: 19,
age3: 20
}
}
})
複製程式碼
結果如下:
同樣的這種寫法也可以獲得key和index:<ul>
<li v-for="(value, key, index) in obj">
{{index}} -- {{key}} -- {{value}}
</li>
</ul>
複製程式碼
結果如圖所示(value key index的順序不能錯哦)
陣列更新,過濾與排序
- push() 向陣列末尾新增一個元素。
- pop() 將陣列的最後一個元素移除,返回值是被刪除的元素。
- shift() 將陣列的第一個元素移除,返回的是被刪除的元素。
- unshift() 在陣列的第一個位置新增設定的引數,其他元素依次後移。返回加入元素後的陣列長度。
- splice() 可以刪除或新增,返回刪除的元素。接受三個引數。
- 第一個參數列示開始操作的位置。
- 第二個參數列示要操作的長度。
- 第三個引數為可選引數(可以有多個),在第二個引數為0時,將其作為新增項。位置為第一個引數設定的位置,此時返回值為空陣列。
- sort()
- reverse()
過濾
在computed屬性中新增如下程式碼,即可在arr陣列中過濾出含有兩個"oo"的元素。
{{matchOO}}
matchOO: function(){
return this.arr.filter(function(arr){
console.log(arr)
return arr.match(/oo/)
})
}
複製程式碼
方法與事件
基本用法
<button #click="handle()"></button>
複製程式碼
handle:function(count){
count = count || 1
this.count += count
console.log(count)
}
複製程式碼
不帶引數的方法再引用時可以不帶括號。帶引數的方法如果引用時不加括號,那麼預設傳遞的值是原生事件物件的event。像上面的程式碼,如果沒有加括號,那麼傳遞的值就是 mouseevent。
修飾符
我們寫了如下程式碼,發現點選按鈕的時候div的click事件也被觸發了,原因是button在div內,相當於同時點了兩個區域,這時我們可以在button的click事件上加一個stop,就可以阻止冒泡事件。
<div @click='divclick' style="width: 100px;height: 100px;background: cyan;">
<button @click='btnclick'>?</button>
</div>
複製程式碼
接下來認識一下 prevent,form表單在提交的時候總是會重新整理頁面,所以我們就需要這個像原生裡的preventDefault()
的修飾符--prevent.用法如下:
<form @submit.prevent>
<button type='submit'></button>
</form>
複製程式碼
接下來再來認識一個self,其作用是讓事件只作用在本身,而不是子元素被呼叫的時候。
<div @click.self="event">
<button @click="event"></button>
</div>
複製程式碼
最後在來認識一下once同學,