3.Vue之自定義指令(鉤子函數(shù)降盹,實例屬性)

介紹

除了內(nèi)置指令与柑,Vue.js 也允許注冊自定義指令。自定義指令提供一種機制將數(shù)據(jù)的變化映射為 DOM 行為蓄坏。
可以用 Vue.directive(id, definition) 方法注冊一個全局自定義指令价捧,它接收兩個參數(shù)指令 ID 與定義對象。

正文

特點:
1涡戳、指令的定義一定要放到 new Vue({}) 代碼之前结蟋,否則報錯并且無效
2、在利用Vue.directive()注冊指令的時候渔彰,不需要加上v- 這個前綴
3嵌屎、在dom元素上使用的時候推正,必須加上v- 前綴
4、如果想要給自定義屬性指令傳入?yún)?shù)宝惰,則注意:
- 1在注冊的時候要利用 params:[] 來接收參數(shù)
- 2 通過bind:function(){}中 利用 this.params點出和parms:[]中定義的那個字符串同名的屬性
- 3在dom元素上使用的時候
- 4 通過 v-color空格更上 parmas:[]中定義好的同名的參數(shù)名稱

1.鉤子函數(shù)

定義對象可以提供幾個鉤子函數(shù)(都是可選的):
?bind:只調(diào)用一次植榕,在指令第一次綁定到元素上時調(diào)用。
?update: 在 bind 之后立即以初始值為參數(shù)第一次調(diào)用尼夺,之后每當(dāng)綁定值變化時調(diào)用尊残,參數(shù)為新值與舊值。
?unbind:只調(diào)用一次淤堵,在指令從元素上解綁時調(diào)用寝衫。

<div v-my-directive="someValue"></div>

Vue.directive('my-directive', {
  bind: function () {
    // 準(zhǔn)備工作
    // 例如,添加事件處理器或只需要運行一次的高耗任務(wù)
  },
  update: function (newValue, oldValue) {
    // 值更新時的工作
    // 也會以初始值為參數(shù)調(diào)用一次
  },
  unbind: function () {
    // 清理工作
    // 例如拐邪,刪除 bind() 添加的事件監(jiān)聽器
  }
})


2.指令實例屬性

所有的鉤子函數(shù)將被復(fù)制到實際的指令對象中慰毅,鉤子內(nèi) this 指向這個指令對象。這個對象暴露了一些有用的屬性:
?el: 指令綁定的元素庙睡。
?vm: 擁有該指令的上下文 ViewModel事富。
?expression: 指令的表達式,不包括參數(shù)和過濾器乘陪。
?arg: 指令的參數(shù)统台。
?name: 指令的名字,不包含前綴啡邑。
?modifiers: 一個對象贱勃,包含指令的修飾符。
?descriptor: 一個對象谤逼,包含指令的解析結(jié)果

3.自定義屬性指令

1贵扰、自定義屬性指令Vue.directive(指令id(注意不能以v-開頭,將來在使用的時候自動加上),function(){this.el})
      屬性指令舉例:
      <input type="text" v-focus> 中的 v-focus 這個指令我們稱之為自定義屬性指令

    定義格式:
    Vue.directive('focus',{
        bind:function(){
          //這個指令的邏輯
          //可以利用this.el來獲取到當(dāng)前指令所在的元素對象
          this.el.style.color = 'red';
        }
        });

////定義一個帶有參數(shù)的自定義指令
    Vue.directive('color',{
        params:['colorname'],
        bind:function(){
            //1.0 獲取到colorname的值
            var cname = this.params.colorname;

            //2.0 獲取到el以后給其賦予一個樣式
            this.el.style.color = cname;
        }
    });

    使用:
    <input type="text" v-model="productid"  v-color colorname="blue" > -----其實就是this.el.style.color = cname=colorname= “blue”流部,

4.自定義元素指令

    <my-v-datefmt></my-v-datefmt>
//定義元素指令
Vue.elementDirective('my-v-datefmt',{
    bind:function(){
        //邏輯代碼
        var date = new Date(this.vm.time); 
        var year = date.getFullYear();
        var m = date.getMonth() + 1;
        var d = date.getDate();
        //輸出: yyyy-mm-dd
        var fmtStr = year+'-'+m +'-'+d;

        this.el.innerText = fmtStr;
    }
});
new Vue({
    el:'#app',
    data:{
        time:new Date()
    },
    methods:{

    }
});
結(jié)果
2017-6-14

官方自定義指令詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末戚绕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子枝冀,更是在濱河造成了極大的恐慌舞丛,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件果漾,死亡現(xiàn)場離奇詭異球切,居然都是意外死亡,警方通過查閱死者的電腦和手機绒障,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門吨凑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人户辱,你說我怎么就攤上這事鸵钝〔诰剩” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵蒋伦,是天一觀的道長弓摘。 經(jīng)常有香客問我,道長痕届,這世上最難降的妖魔是什么韧献? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮研叫,結(jié)果婚禮上锤窑,老公的妹妹穿的比我還像新娘。我一直安慰自己嚷炉,他們只是感情好渊啰,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著申屹,像睡著了一般绘证。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哗讥,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天嚷那,我揣著相機與錄音,去河邊找鬼杆煞。 笑死魏宽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的决乎。 我是一名探鬼主播队询,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼构诚!你這毒婦竟也來了蚌斩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤范嘱,失蹤者是張志新(化名)和其女友劉穎送膳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彤侍,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年逆趋,在試婚紗的時候發(fā)現(xiàn)自己被綠了盏阶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡闻书,死狀恐怖名斟,靈堂內(nèi)的尸體忽然破棺而出脑慧,到底是詐尸還是另有隱情,我是刑警寧澤砰盐,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布闷袒,位于F島的核電站,受9級特大地震影響岩梳,放射性物質(zhì)發(fā)生泄漏囊骤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一冀值、第九天 我趴在偏房一處隱蔽的房頂上張望也物。 院中可真熱鬧,春花似錦列疗、人聲如沸滑蚯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽告材。三九已至,卻和暖如春古劲,著一層夾襖步出監(jiān)牢的瞬間斥赋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工绢慢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灿渴,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓胰舆,卻偏偏與公主長得像骚露,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缚窿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

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