Vue基本指令的使用

v-cloak(插值表達(dá)式)

使用v-cloak能夠解決插值表達(dá)式的閃爍問題

如:<p>{{ msg }}</p>,在Vue實例中data中的msg值為‘123’

在網(wǎng)速很慢的情況下,<script>標(biāo)簽的請求速度也會很慢,我們會看到在這個時候會渲染出{{ msg }}再渲染出123

而在<p>標(biāo)簽里面添加v-cloak屬性

<p v-cloak>{{ msg }}</p>

再在css里面設(shè)置

[v-cloak]{

display:none;

}

可以解決這個問題

原理:

vue.js頁面加載完成后,會自動去除v-cloak的css樣式,也就是說對應(yīng)的p標(biāo)簽變?yōu)榭梢娏?/p>


v-text

v-text與使用雙向數(shù)據(jù)綁定{{ msg }}的作用相似,但各有優(yōu)缺點

如:

<p v-text="msg"></p>

優(yōu)點:默認(rèn)v-text是沒有閃爍問題的

缺點:v-text會覆蓋原本元素內(nèi)的innerHTML的值

如:

<p v-text="msg">Hello,Vue!</p>

msg中的值會覆蓋掉<p>標(biāo)簽對里面innerHTML的值

而v-cloak可以在<p>標(biāo)簽對里面靈活添加內(nèi)容

如:

<p v-cloak>hello{{ msg }}hello</p>

[v-cloak]{

display:none;

}

結(jié)果<p>的結(jié)果會顯示hello123hello


v-html

把屬性的值解析成html,也存在覆蓋掉原本內(nèi)容的情況

假如有

msg:'<h1>Hello,Vue!</h1>'

我們想只顯示Hello,Vue!這個結(jié)果,就必須使用v-html

使用v-text或者是使用插值表達(dá)式{{ msg }}的話會輸出<h1>Hello,Vue!</h1>這個結(jié)果,v-text把msg解析的值的全部內(nèi)容都解析成了一個字符串


v-bind

v-bind: 是Vue中用于綁定屬性的指令

假如有

<input type="button" value="按鈕" title="mytitle" />

這時候當(dāng)鼠標(biāo)移動到該按鈕的時候,按鈕上會顯示mytitle這個字符串

但是有一種情況就是:

mytitle是我在data里面自定義的變量,mytitle:'hello'

想要輸出的是hello,就需要加上v-bind: 指令

<input type="button" value="按鈕" v-bind: title="mytitle" />

這時候,v-bind會把""里面的東西解析成js表達(dá)式,如:

<input type="button" value="按鈕" v-bind: title="mytitle + ‘123’" />

也是可以的

:v-bind: 還可以縮寫成:

<input type="button" value="按鈕" : title="mytitle" />


v-on

Vue中提供了v-on: 事件綁定機(jī)制(v-on是用來綁定事件的)

一般情況下,我們定義一個事件,需要在元素內(nèi)為它設(shè)置一個id號,然后通過document.getElementById("xxx").onclick = function(){}

但是這就違背了Vue設(shè)計的初衷,Vue就是為了減少DOM操作而設(shè)計出來的,Vue不提倡我們操作DOM

這時候我們可以v-on:事件名="方法名"

這個方法名需要在Vue里面的methods屬性下定義

methods{

????方法名: function(){

? ? ? ? alert("hello");

????}

}

v-on也有縮寫,縮寫為@,如:@: 事件名="方法名"


v-model

v-model實現(xiàn)表單元素(View層)和Vue實例中的data(Model層)的雙向數(shù)據(jù)綁定

也就是說View層數(shù)據(jù)發(fā)生改變,Model層的數(shù)據(jù)也會發(fā)生改變;Model層數(shù)據(jù)發(fā)生改變,View層的數(shù)據(jù)也會發(fā)生改變;

:v-model只能用在表單元素中


v-model和v-bind的主要區(qū)別在于:

v-bind只能實現(xiàn)Model層到View層的數(shù)據(jù)綁定,

而v-model可以實現(xiàn)雙向數(shù)據(jù)綁定


v-for

v-for在Vue中的主要作用是循環(huán)


一、普通數(shù)組的循環(huán)渲染

在data是聲明一個數(shù)組

list: [1,2,3,4,5,6]

假如我們想在<p>標(biāo)簽中循環(huán)輸出該數(shù)組,可以使用v-for指令,如:

<p v-for="(item,i) in list">索引值:{{ i }},數(shù)組每一項的值:{{ item }}</p>


二、對象數(shù)組的循環(huán)渲染

或者有數(shù)組

list:[

? ? {id: 1, name, zhang},

? ? {id: 2, name: wang},

? ? {id: 3, name: chen},

????{id: 4, name: wu},

]

還是輸出他們的值,如:

<p v-for="user in list">{{ user.id }}----------{{ user.name }}</p>


三、循環(huán)對象

在data中有

data:{

? ? user:{

? ? ? ? id:1,

????????name:tony,

? ? ? ? gender:male

????}

}

則可以這樣循環(huán)輸出

<p v-for="(val, key, i) in user">值:{{ val }},鍵:{{ key }},索引:{{ i }}</p>

:在Vue2.20的版本后,當(dāng)在組件中使用v-for時,key屬性是必須帶上的

<p v-for="item in user" v-bind: key="item.id">{{? item }}</p>


四、數(shù)字的迭代循環(huán)

<p v-for="count in 10">{{ count }}</p>

則輸出1-10,count從1開始


v-if

在Vue中用于元素的顯示和隱藏

v-if特點:

每次都會創(chuàng)建或刪除元素

v-if有較高的切換性能消耗

如果元素涉及到頻繁的切換,最好不要用v-if

如果元素可能永遠(yuǎn)也不會被顯示出來被用戶看到,則推薦使用v-if


v-show

在Vue中也是用于元素的顯示和隱藏

v-show特點:

每次都不會創(chuàng)建或刪除元素,只是切換了元素的display:none樣式

v-show有較高的較高的初始化消耗(不管標(biāo)志位初始化為true還是false,該元素都存在,而v-if初始化為false的時候,不會創(chuàng)建元素,故v-show初始化性能消耗較高)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # 傳智播客vue 學(xué)習(xí)## 1. 什么是 Vue.js* Vue 開發(fā)手機(jī) APP 需要借助于 Weex* Vu...
    再見天才閱讀 3,786評論 0 6
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,168評論 0 29
  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,361評論 0 6
  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,589評論 0 25
  • 相關(guān)概念 混合開發(fā)和前后端分離 混合開發(fā)(服務(wù)器端渲染) 前后端分離后端提供接口,前端開發(fā)界面效果(專注于用戶的交...
    他愛在黑暗中漫游閱讀 3,017評論 4 45

友情鏈接更多精彩內(nèi)容