文本:
數(shù)據(jù)綁定最常見的形式就是使用 “Mustache” 語(yǔ)法(雙大括號(hào))的文本插值:
<div v-html="rawHtml"></div>
雙大括號(hào)會(huì)將數(shù)據(jù)解釋為純文本跳昼,而非 HTML 汗贫。為了輸出真正的 HTML 澈圈,你需要使用v-html
指令:
<div v-html="rawHtml"></div>
這個(gè) div 的內(nèi)容將會(huì)被替換成為屬性值 rawHtml域携,直接作為 HTML —— 會(huì)忽略解析屬性值中的數(shù)據(jù)綁定棺弊。注意晶密,你不能使用v-html
來(lái)復(fù)合局部模板,因?yàn)?Vue 不是基于字符串的模板引擎模她。反之稻艰,對(duì)于用戶界面(UI),組件更適合作為可重用和可組合的基本單位侈净。
你的站點(diǎn)上動(dòng)態(tài)渲染的任意 HTML 可能會(huì)非常危險(xiǎn)尊勿,因?yàn)樗苋菀讓?dǎo)致 XSS 攻擊。請(qǐng)只對(duì)可信內(nèi)容使用 HTML 插值畜侦,絕不要對(duì)用戶提供的內(nèi)容插值元扔。
HTML的屬性:
mustache 語(yǔ)法不能作用在 HTML 特性上,遇到這種情況應(yīng)該使用v-bind
指令:
<div v-bind:id="dynamicId"></div>
實(shí)際上夏伊,對(duì)于所有的數(shù)據(jù)綁定摇展, Vue.js 都提供了完全的 JavaScript 表達(dá)式支持。(必須是表達(dá)式,不能是語(yǔ)句咏连,流控制請(qǐng)使用三元表達(dá)式)
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div v-bind:id="'list-' + id"></div>
指令:
令(Directives)是帶有v-
前綴的特殊屬性盯孙。一些指令能夠接收一個(gè)“參數(shù)”,在指令名稱之后以冒號(hào)表示祟滴。例如振惰,v-bind
指令可以用于響應(yīng)式地更新 HTML 屬性:
<a v-bind:href="url"></a>
在這里 href 是參數(shù),告知 v-bind 指令將該元素的 href 屬性與表達(dá)式 url 的值綁定垄懂。
過濾器:
Vue.js 允許你自定義過濾器骑晶,可被用作一些常見的文本格式化。過濾器可以用在兩個(gè)地方:mustache 插值和v-bind
表達(dá)式草慧。
<!-- in mustaches -->
{{ message | capitalize }}
<!-- in v-bind -->
<div v-bind:id="rawId | formatId"></div>
過濾器函數(shù)總接收表達(dá)式的值 (之前的操作鏈的結(jié)果) 作為第一個(gè)參數(shù)桶蛔。在這個(gè)例子中,capitalize 過濾器函數(shù)將會(huì)收到 message 的值作為第一個(gè)參數(shù)漫谷。
new Vue({
// ...
filters: {
capitalize: function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
}
}
})
縮寫:
v-bnd
<!-- 完整語(yǔ)法 -->
<a v-bind:href="url"></a>
<!-- 縮寫 -->
<a :href="url"></a>
v-on
<!-- 完整語(yǔ)法 -->
<a v-on:click="doSomething"></a>
<!-- 縮寫 -->
<a @click="doSomething"></a>