Vue入門系列(四)Vue模板和指令

Vue模板和Angular模板相似,擁有指令和組件標(biāo)簽脐往。

在渲染層上休吠,Vue2.0引入虛擬DOM。Vue編譯器會把模板編譯成一個渲染函數(shù)(類似React)业簿,函數(shù)被調(diào)用的時候會返回一個虛擬DOM樹瘤礁,其描述了當(dāng)前頁面所處的狀態(tài)。當(dāng)發(fā)生數(shù)據(jù)改變時梅尤,模板更新重新編譯生成一個新的虛擬DOM樹柜思,將新樹和舊樹對比,找到不同點巷燥,再最終修改真實的DOM節(jié)點赡盘。

1. 模板

下面是一個簡單的Vue模板例子:

<div id="app">
  <ul>
    <li v-for="todo in todos" v-on:click="todo.done=!todo.done">
      {{todo.title}}
    </li>
  </ul>
</div>

模板的文本數(shù)據(jù)綁定使用“mushtache”語法,{{}}內(nèi)插入文本變量缰揪。

2.指令

Vue指令以v-開頭陨享,作用在HTML元素上,將指令綁定在元素上,給綁定的元素添加一些特殊行為抛姑。

Vue常用指令如下:

//更新綁定元素中的內(nèi)容赞厕,類似于$.text()
<p v-text="textStr"></p>

//更新綁定元素中的html內(nèi)容,類似于$.html()
<p v-html="htmlStr"></p>

//根據(jù)表達(dá)式的值(true/false)渲染元素定硝。如果isShow為false則不會渲染p標(biāo)簽
<p v-if="isShow"></p>
<p v-else></p>

//根據(jù)表達(dá)式的值(true/false)顯示或隱藏元素坑傅。如果isShow為false則p標(biāo)簽樣式為"display:none"
<p v-show="isShow"></p>

//用于遍歷數(shù)據(jù)渲染元素或模板。如果list為[1,2,3]則會渲染3個p標(biāo)簽喷斋,內(nèi)容依次為1唁毒,2,3
<p v-for="item in list"></p>

//用于在元素上綁定事件星爪。p標(biāo)簽上綁定了clickAction的點擊事件
<p v-on:click="clickAction"></p>

//用于在元素上綁定屬性值浆西。類似于$.attr("title", "titleStr");
<p v-bind:title="titleStr"></p>

//在表單元素上創(chuàng)建雙向數(shù)據(jù)綁定。一旦input有新的輸入顽腾,數(shù)據(jù)inputVal同步更新近零;反之亦然
<input v-model="inputVal"/>

//修飾符(.xxx),用于指明指令以一種特殊方式綁定抄肖。.prevent代表調(diào)用event.preventDefault()方法
<form v-on:submit.prevent="onSubmit"></form>

//過濾器用作文本格式化久信。filterId和filterText是兩個過濾器定義
<div v-bind:id="idStr | filterId">{{text |  filterText}}</div>
指令縮寫
  1. v-bind縮寫:<a v-bind:href="url"></a>==> <a :href="url"></a>
  2. v-on縮寫:<a v-on:click="doSomething"></a> ==> <a @click="doSomething"></a>
自定義指令

通過自定義指令,可以做一些特殊的改變DOM的行為漓摩。
自定義指定注冊如下:

Vue.directive('demo', {
  // 鉤子函數(shù)
  bind(){...}  
  inserted(){...},
  ...
})
// 使用自定義指令
<div v-demo></div>

注冊自定義指定最重要是鉤子函數(shù)裙士,針對具體功能,復(fù)寫不同的鉤子函數(shù)管毙。

自定義指令鉤子函數(shù) 說明
bind (調(diào)用一次)指令第一次綁定到元素時調(diào)用
inserted 被綁定元素插入父節(jié)點時調(diào)用
update 被綁定元素所在的模板更新時調(diào)用
componentUpdated 被綁定元素所在模板完成一次更新周期時調(diào)用
unbind (調(diào)用一次)指令與元素解綁時調(diào)用

參考官網(wǎng)例子腿椎,注冊自定義指令v-focus,用于自動聚焦一個input元素夭咬。

Vue.directive('focus', {
  inserted: function (el) {
    el.focus(); // 聚焦元素
  }
})
//使用指令
<input v-focus>

下一節(jié):Vue入門系列(五)組件通信

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啃炸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子卓舵,更是在濱河造成了極大的恐慌南用,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掏湾,死亡現(xiàn)場離奇詭異裹虫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)忘巧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門恒界,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睦刃,“玉大人砚嘴,你說我怎么就攤上這事。” “怎么了际长?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵耸采,是天一觀的道長。 經(jīng)常有香客問我工育,道長虾宇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任如绸,我火速辦了婚禮嘱朽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怔接。我一直安慰自己搪泳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布扼脐。 她就那樣靜靜地躺著岸军,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓦侮。 梳的紋絲不亂的頭發(fā)上艰赞,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機(jī)與錄音肚吏,去河邊找鬼方妖。 笑死,一個胖子當(dāng)著我的面吹牛罚攀,可吹牛的內(nèi)容都是我干的吁断。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼坞生,長吁一口氣:“原來是場噩夢啊……” “哼仔役!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起是己,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤又兵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后卒废,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沛厨,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年摔认,在試婚紗的時候發(fā)現(xiàn)自己被綠了逆皮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡参袱,死狀恐怖电谣,靈堂內(nèi)的尸體忽然破棺而出秽梅,到底是詐尸還是另有隱情,我是刑警寧澤剿牺,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布企垦,位于F島的核電站,受9級特大地震影響晒来,放射性物質(zhì)發(fā)生泄漏钞诡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一湃崩、第九天 我趴在偏房一處隱蔽的房頂上張望荧降。 院中可真熱鬧,春花似錦攒读、人聲如沸誊抛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拗窃。三九已至,卻和暖如春泌辫,著一層夾襖步出監(jiān)牢的瞬間随夸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工震放, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留宾毒,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓殿遂,卻偏偏與公主長得像诈铛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子墨礁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容