vue 2.0 自定義指令詳解

首先呢,我們都知道道川,vue中有很多很多的內(nèi)置指令午衰,如v-model、v-for冒萄、v-show等臊岸,除了這些內(nèi)置指令,vue也允許我們注冊(cè)自定義指令尊流。自定義指令提供一種機(jī)制將數(shù)據(jù)的變化反應(yīng)為DOM行為帅戒。(介紹中的鉤子函數(shù)以及鉤子函數(shù)參數(shù)都是在官方文檔中拿來的)

(這一節(jié)文章的內(nèi)容中所涉及到的代碼均采用圖片的形式,一是保證代碼正確的運(yùn)行崖技,二是為了讓大家自己敲打以增加熟練度逻住,不要一味的ctrl+c施流、ctrl+v)

1. 鉤子函數(shù)(均為可選)

????????bind:只調(diào)用一次,指令第一次綁定到元素時(shí)調(diào)用鄙信。在這里可以進(jìn)行一次性的初始化設(shè)置。

????????inserted:被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用 (僅保證父節(jié)點(diǎn)存在忿晕,但不一定已被插入文檔中)装诡。

????????update:所在組件的 VNode 更新時(shí)調(diào)用,但是可能發(fā)生在其子 VNode 更新之前践盼。指令的值可能發(fā)生了改變鸦采,也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新 (詳細(xì)的鉤子函數(shù)參數(shù)見下)咕幻。

????????componentUpdated:指令所在組件的 VNode?及其子 VNode?全部更新后調(diào)用渔伯。

????????unbind:只調(diào)用一次,指令與元素解綁時(shí)調(diào)用肄程。

2. 鉤子函數(shù)參數(shù)

el:指令所綁定的元素锣吼,可以用來直接操作 DOM 。

?binding:一個(gè)對(duì)象蓝厌,包含以下屬性:

????name:指令名玄叠,不包括?v-?前綴。

????value:指令的綁定值拓提,例如:v-my-directive="1 + 1"?中读恃,綁定值為?2。

????oldValue:指令綁定的前一個(gè)值代态,僅在?update?和?componentUpdated?鉤子中可用寺惫。無論值是否改變都可用。

????expression:字符串形式的指令表達(dá)式蹦疑。例如?v-my-directive="1 + 1"?中西雀,表達(dá)式為?"1 + 1"。

????arg:傳給指令的參數(shù)必尼,可選蒋搜。例如?v-my-directive:foo?中,參數(shù)為?"foo"判莉。

????modifiers:一個(gè)包含修飾符的對(duì)象豆挽。例如:v-my-directive.foo.bar?中,修飾符對(duì)象為?{ foo: true, bar: true }券盅。

vnode:Vue 編譯生成的虛擬節(jié)點(diǎn)帮哈。移步?VNode API?來了解更多詳情。

oldVnode:上一個(gè)虛擬節(jié)點(diǎn)锰镀,僅在?update?和?componentUpdated?鉤子中可用娘侍。

除了?el?之外咖刃,其它參數(shù)都應(yīng)該是只讀的,切勿進(jìn)行修改憾筏。如果需要在鉤子之間共享數(shù)據(jù)嚎杨,建議通過元素的?dataset?來進(jìn)行。

3. 指令格式(官方文檔中也給出了相應(yīng)的示例氧腰,本節(jié)文章中不采用官網(wǎng)給出的示例枫浙,后邊我們會(huì)簡單的寫一個(gè)示例)

????????自定義指令的基本格式以及每部分的功能

????????什么?還是不知道怎么用古拴?好吧箩帚,下面我就給大家寫一個(gè)簡單的案例

4. 簡單的案例

? ? ? ? 之前在網(wǎng)上看到過一個(gè)谷歌圖片的加載,在圖片未完成加載前黄痪,用隨機(jī)的背景色占位紧帕,等到圖片加載完成后,再展示出來桅打,下邊先上代碼

? ? ? ? a. 指令代碼

? ? ? ? b. 使用(具體效果就不放出來了是嗜,懶得搞gif圖片了,可以自己拿去試試)

5.? 函數(shù)簡寫(文檔中也有存在)

????????在很多時(shí)候油额,你可能想在?bind?和?update?時(shí)觸發(fā)相同行為叠纷,而不關(guān)心其它的鉤子。比如這樣寫:

6. 對(duì)象字面量

如果指令需要多個(gè)值潦嘶,可以傳入一個(gè) JavaScript 對(duì)象字面量涩嚣。記住,指令函數(shù)能夠接受所有合法的 JavaScript 表達(dá)式掂僵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末航厚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锰蓬,更是在濱河造成了極大的恐慌幔睬,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芹扭,死亡現(xiàn)場離奇詭異麻顶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舱卡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門辅肾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人轮锥,你說我怎么就攤上這事矫钓。” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵新娜,是天一觀的道長赵辕。 經(jīng)常有香客問我,道長概龄,這世上最難降的妖魔是什么还惠? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮私杜,結(jié)果婚禮上吸重,老公的妹妹穿的比我還像新娘。我一直安慰自己歪今,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布颜矿。 她就那樣靜靜地躺著寄猩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骑疆。 梳的紋絲不亂的頭發(fā)上田篇,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音箍铭,去河邊找鬼泊柬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛诈火,可吹牛的內(nèi)容都是我干的兽赁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼冷守,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼刀崖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拍摇,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對(duì)情侶失蹤亮钦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后充活,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜂莉,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年混卵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了映穗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡淮菠,死狀恐怖男公,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤枢赔,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布澄阳,位于F島的核電站,受9級(jí)特大地震影響踏拜,放射性物質(zhì)發(fā)生泄漏碎赢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一速梗、第九天 我趴在偏房一處隱蔽的房頂上張望肮塞。 院中可真熱鬧,春花似錦姻锁、人聲如沸枕赵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拷窜。三九已至,卻和暖如春涧黄,著一層夾襖步出監(jiān)牢的瞬間篮昧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國打工笋妥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懊昨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓春宣,卻偏偏與公主長得像酵颁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子月帝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

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

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容材义,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,046評(píng)論 0 29
  • [一] Vue mixins(混合) 作用:為組件定義可復(fù)用的方法嫁赏,可以在 mixin對(duì)象 里定義組件的任何屬性其掂,...
    woow_wu7閱讀 1,503評(píng)論 0 0
  • 一、什么是全局API 全局API并不在構(gòu)造器里潦蝇,而是先聲明全局變量或者直接在Vue上定義一些新功能款熬,Vue內(nèi)置了一...
    小囧兔閱讀 937評(píng)論 0 1
  • [文/原創(chuàng)]阿九的樹屋 “每個(gè)人心里都潛伏著一個(gè)怪物,蓄勢(shì)待發(fā)攘乒∠团#” Z先生非常有錢,有錢到不需要擔(dān)心以后的生活则酝,對(duì)...
    阿九的樹屋閱讀 840評(píng)論 3 9
  • 每到日暮鄉(xiāng)思濃,便邀斜陽對(duì)瓷盅般卑; 云染漫天滿彩韻武鲁,霜寒楓葉一片紅! 煙裊裊蝠检,影匆匆沐鼠,總把期盼付長空! 清風(fēng)若懂癡情...
    逸塵居士閱讀 315評(píng)論 0 0