1. 程式人生 > 程式設計 >Vue.js的模板語法詳解

Vue.js的模板語法詳解

Vue.js 模板語法

Vue.js 使用了基於 HTML 的模版語法,允許開發者宣告式地將 DOM 繫結至底層 Vue 例項的資料。

Vue.js 的核心是一個允許你採用簡潔的模板語法來宣告式的將資料渲染進 DOM 的系統。

結合響應系統,在應用狀態改變時, Vue 能夠智慧地計算出重新渲染元件的最小代價並應用到 DOM 操作上。

使用“Mustache”語法 (即用雙大括號包裹) 的文字插值:

<span>Message: {{ msg }}</span>

Mustache 標籤將會被替代為對應資料物件上 “msg” 屬性的值。無論何時,繫結的資料物件上 msg 屬性發生了改變,插值處的內容都會更新。

如果使用 v-once 指令,你也能執行 一次性插值 ,當資料改變時,插值處的內容不會更新。但請留心這會影響到該節點上的其它資料繫結。

HTML

直接用雙大括號包裹只是普通文字,如果想實現HTML程式碼效果,需要加入 v-html 指令

html部分:

<div id="app">
	<p>Using mustaches: {{ rawHtml }}</p>
	<p>Using v-html directive: <span v-html="rawHtml"></span></p>
</div>

js部分:

var vm = new Vue({
	el:'#app',data:{
	 rawHtml:'<span style="color:red">this is red</span>'
	}
});

v-html使用時 在span標籤的前標籤內寫入“v-html="xxx” ,相當於將data中的值以HTML形式放入span標籤內。

Vue.js的模板語法詳解

attribute(屬性)

Mustache 語法不能作用在 HTML attribute 上,遇到這種情況應該使用 v-bind 指令:

格式:v-bind:屬性="變數名"

html部分:

<div v-bind:color="textcolor">123</div>

js部分:

data:{
 textcolor:"red"
}

將變數textcolor的值“red"繫結在盒子的 "color" 屬性上

Vue.js的模板語法詳解

對於布林屬性,v-bind使用為:

<button v-bind:disabled="isButtonDisabled">Button</button>

如果 isButtonDisabled 的值是 null、undefinedfalse ,則 disabled attribute 甚至不會被包含在渲染出來的 <button> 元素中。

JS表示式

迄今為止,在我們的模板中,我們一直都只繫結簡單的屬性鍵值。但實際上,對於所有的資料繫結,Vue.js 都提供了完全的 JavaScript 表示式支援。

{{ data變數 + 1 }}    //
{{ data變數/表示式 ? 'true程式碼' : 'false程式碼' }}   //三元運算
{{ data變數.split('').reverse().join('') }}   //可以進行函式呼叫

<div v-bind:id="'list-' + id"></div>

這些表示式會在所屬 Vue 例項的資料作用域下作為 JavaScript被解析。

限制是:每個繫結都只能包含單個表示式,所以下面的例子都不會生效。

<!-- 這是語句,不是表示式 -->
{{ var a = 1 }}

<!-- 流控制也不會生效,請使用三元表示式 -->
{{ if (ok) { return message } }}

指令

指令 (Directives) 是帶有 v- 字首的特殊 attribute。指令 attribute 的值預期是單個 JavaScript 表示式 。指令的職責是, 當表示式的值改變時,將其產生的連帶影響,響應式地作用於 DOM。 回顧我們在介紹中看到的例子:

<p v-if="seen">現在你看到我了</p>

這裡,v-if 指令將根據表示式 seen 的值的真假來插入/移除 <p> 元素。

引數

一些指令能夠接收一個“引數”,在指令名稱之後以冒號表示。例如, v-bind 指令可以用於響應式地更新 HTML屬性值:

<a v-bind:href="url" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >...</a>

在這裡 href 是引數 ,告知 v-bind 指令將該元素的 href attribute 與表示式 url 的值繫結。

另一個例子是 v-on 指令,它用於監聽 DOM 事件:

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

在這裡引數是監聽的事件名。

動態引數

可以動態的繫結不同的屬性,可以用 方括號 括起來的 JavaScript 表示式作為一個指令的引數:

<!--
注意,引數表示式的寫法存在一些約束,如之後的“對動態引數表示式的約束”章節所述。
-->
<a v-bind:[attributeName]="url"> ... </a>

這裡的 attributeName(命名中不能有逗號或冒號等符號) 會被作為一個 JavaScript 表示式進行動態求值,求得的值將會作為最終的引數來使用。

例如,如果你的 Vue 例項有一個 data 屬性 attributeName,其值為 "href",那麼這個繫結將等價於 <a v-bind:href="url" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >...</a>

同樣地,你可以使用動態引數為一個動態的事件名繫結處理函式:

<a v-on:[eventName]="doSomething"> ... </a>

在這個示例中,當 eventName 的值為 "focus" 時,v-on:[eventName] 將等價於 v-on:focus。

修飾符

修飾符 (modifier) 是以半形句號 " . " 指明的特殊字尾,用於指出一個指令應該以特殊方式繫結。

簡寫 v-bind 縮寫

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

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

v-on 縮寫

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

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

總結

以上所述是小編給大家介紹的Vue.js的模板語法詳解,希望對大家有所幫助!