vue指令概覽

原文

博客原文

大綱

1、什么是vue指令
2、向指令中傳入?yún)?shù)
3、指令中帶入修飾符
4、指令的縮寫
5、常見的vue指令
5.1、v-model雙向綁定數(shù)據(jù)
5.2、v-for循環(huán)
5.3、v-if 元素的存在與否
5.4、v-else 搭配v-if使用
5.5、v-else-if搭配v-if使用
5.6、v-bind 屬性綁定
5.7、v-style 通過v-bind實現(xiàn)style的綁定
5.8、v-class 通過v-bind實現(xiàn)class的綁定
5.9、v-on 事件綁定
5.10、v-text 讀取文本
5.11、v-html 讀取html標簽
5.12、v-once 只渲染一次
5.13、v-pre 把標簽內部的元素原位輸出
5.14、v-show 是否顯示

1、什么是vue指令

指令 (Directives) 是帶有 v- 前綴的特殊屬性。指令屬性的值預期是單個 JavaScript 表達式 (v-for 是例外情況,稍后我們再討論)。指令的職責是,當表達式的值改變時,將其產(chǎn)生的連帶影響,響應式地作用于 DOM。

<p v-if="seen">現(xiàn)在你看到我了</p>

<!--
    這里,v-if 指令將根據(jù)表達式 seen 的值的真假來插入/移除 <p> 元素。
-->
2、向指令中傳入?yún)?shù)

一些指令能夠接收一個“參數(shù)”,在指令名稱之后以冒號表示。
例如,v-bind 指令可以用于響應式地更新 HTML 屬性:

<a v-bind:href="url">...</a>
<!--
    在這里 href 是參數(shù),告知 v-bind 指令將該元素的 href 屬性與表達式 url 的值綁定。
-->

另一個例子是 v-on 指令,它用于監(jiān)聽 DOM 事件:

<a v-on:click="doSomething">...</a>

<!--
    在這里參數(shù)是監(jiān)聽的事件名。
-->
3、指令中帶入修飾符

修飾符 (Modifiers) 是以半角句號 . 指明的特殊后綴,用于指出一個指令應該以特殊方式綁定。例如,.prevent 修飾符告訴 v-on 指令對于觸發(fā)的事件調用 event.preventDefault():

<form v-on:submit.prevent="onSubmit">...</form>
4、指令的縮寫

v- 前綴作為一種視覺提示,用來識別模板中 Vue 特定的特性。當你在使用 Vue.js 為現(xiàn)有標簽添加動態(tài)行為 (dynamic behavior) 時,v- 前綴很有幫助,然而,對于一些頻繁用到的指令來說,就會感到使用繁瑣。同時,在構建由 Vue.js 管理所有模板的單頁面應用程序 (SPA - single page application) 時,v- 前綴也變得沒那么重要了。因此,Vue.js 為 v-bind 和 v-on 這兩個最常用的指令,提供了特定簡寫:

<!--
    v-bind 縮寫
-->
<!-- 完整語法 -->
<a v-bind:href="url">...</a>

<!-- 縮寫 -->
<a :href="url">...</a>

<!--
    v-on 縮寫
-->

<!-- 完整語法 -->
<a v-on:click="doSomething">...</a>

<!-- 縮寫 -->
<a @click="doSomething">...</a>

它們看起來可能與普通的 HTML 略有不同,但 : 與 @ 對于特性名來說都是合法字符,在所有支持 Vue.js 的瀏覽器都能被正確地解析。而且,它們不會出現(xiàn)在最終渲染的標記中。縮寫語法是完全可選的,但隨著你更深入地了解它們的作用,你會慶幸擁有它們。

5、常見的vue指令
5.1、v-model雙向綁定數(shù)據(jù)
<input type="text" v-model="msg"/>
{{msg}} <!--取數(shù)據(jù)-->
5.2、v-for循環(huán)

我們用 v-for 指令根據(jù)一組數(shù)組的選項列表進行渲染。v-for 指令需要使用 item in items 形式的特殊語法,items 是源數(shù)據(jù)數(shù)組并且 item 是數(shù)組元素迭代的別名。

<ul>
    <li v-for="item of items" v-bind:key="item.age">
        <span>{{item.name}}</span>
        <span>{{item.age}}</span>
    </li>
</ul>
items: [
    {'name': 'xiaohong1', 'age': 12},
    {'name': 'xiaohong2', 'age': 12},
    {'name': 'xiaohong3', 'age': 12},
    {'name': 'xiaohong4', 'age': 12}
]
5.3、v-if 元素的存在與否

控制元素的存在與否,當傳入v-if的值是true的時候則v-if綁定的DOM存在(切記這里說的是存在與否而不是顯示與否)

<div>
    <span class="title">存在或不存在:v-if</span><br>
    <span v-if="condition">存在</span><br>
    <span v-if="!condition">不存在</span><br>
</div>
5.4、v-else 搭配v-if使用

使用 v-else 指令來表示 v-if 的“else 塊”
v-else 元素必須緊跟在帶 v-if 或者 v-else-if 的元素的后面,否則它將不會被識別。

<div v-if="Math.random() > 0.5">
  Now you see me
</div>
<div v-else>
  Now you don't
</div>
5.5、v-else-if搭配v-if使用

2.1.0 新增
v-else-if,顧名思義,充當 v-if 的“else-if 塊”,可以連續(xù)使用:
類似于 v-else,v-else-if 也必須緊跟在帶 v-if 或者 v-else-if 的元素之后。

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>
5.6、v-bind 屬性綁定

通過v-bind可以動態(tài)綁定標簽上的屬性的值,如input的value/name等屬性的值。

<input v-bind:value="name">
5.7、v-style 通過v-bind實現(xiàn)style的綁定

vue中沒有專門style的綁定,但是可以通過v-bind實現(xiàn)類似于v-style的綁定。

<span v-bind:style="{'color':'red'}">綁定color:red樣式</span>
5.8、v-class 通過v-bind實現(xiàn)class的綁定

vue中沒有專門class的綁定,但是可以通過v-bind實現(xiàn)類似于v-class的綁定。

<span v-bind:class="'text'">綁定title樣式</span>
5.9、v-on 事件綁定

可以用 v-on 指令監(jiān)聽 DOM 事件,并在觸發(fā)時運行一些 JavaScript 代碼
然而許多事件處理邏輯會更為復雜,所以直接把 JavaScript 代碼寫在 v-on 指令中是不可行的
因此 v-on 還可以接收一個需要調用的方法名稱

<span v-on:click="clickMe()">點擊我輸出日志</span>
5.10、v-text 讀取文本

會將變量中的內容以文本的形式輸出,哪怕內容中含有html標簽,也不會解析,而是以文本的形式輸出。
如:someHtml: '<i><b>我是一些html斜體字</b></i>' 得到的結果就是:<i><b>我是一些html斜體字</b></i>

<span v-text="someText"></span>
5.11、v-html 讀取html標簽

會將變量中的內容讀取出來,會解析內容中的html標簽
如下得到的結果就是加粗的斜體字:我是一些html斜體字

<span v-html="someHtml"></span>
5.12、v-once 只渲染一次

v-once 進入頁面時,只渲染一次,不再進行渲染:<span v-once>我只渲染一次</span>
如果如下綁定在事件中,那么這個事件只會執(zhí)行一次,而且是在渲染的時候自動幫我們執(zhí)行了這個事件,之后的點擊效果就失效

<span v-on.once:click="clickMe()">我是只渲染一次的點擊事件</span>
5.13、v-pre 把標簽內部的元素原位輸出

不會解析somePreText內的東西,直接原樣輸出{{soemPreText}}

<span v-pre>{{soemPreText}}</span>
5.14、v-show 是否顯示

控制dom是否顯示,即顯示或隱藏
不同的是帶有 v-show 的元素始終會被渲染并保留在 DOM 中。v-show 只是簡單地切換元素的 CSS 屬性 display。
注意,v-show 不支持 <template> 元素,也不支持 v-else。

<span v-show="condition">顯示</span><br>
<span v-show="!condition">隱藏</span><br>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容,還有我對于 Vue 1.0 印象不深的內容。關于...
    云之外閱讀 5,081評論 0 29
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本,Vue即被注冊為全局變量,可以在頁面使用了。 如果希望搭建...
    Awey閱讀 11,107評論 4 129
  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,275評論 0 25
  • 文/一土 這是一個真實的夢。醒來時,可能忘記了大部分內容,夢里只剩極少一部分能夠還原。 人的一生中,會做許多的夢。...
    雨下撒哈拉閱讀 1,001評論 0 0
  • 小路上的輕口哨 情意只有她知道 長辮子,淡眉梢 看一眼,忘不了
    敖湯閱讀 184評論 4 4