欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue.js directive自定義指令詳解

 更新時間:2021年09月14日 09:19:34   作者:貓老板的豆  
這篇文章主要介紹了Vue.js directive自定義指令詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

自定義一個demo指令

Vue自定義指令語法如下:

Vue.directive(id, definition)

傳入的兩個參數(shù),id是指指令I(lǐng)D,definition是指定義對象。其中,定義對象可以提供一些鉤子函數(shù)。

<div id="app">
	<!-- input輸入框獲得焦點 -->
	<input type="text" v-focus/>
</div>

<script>
	// 注冊一個全局自定義指令 v-focus
	Vue.directive("focus", {
		// 當(dāng)綁定元素插入到 DOM 中。
		inserted(el, binding) {
			// 聚焦元素
			el.focus();
		}
	})
</script>
<div id="app">
    <p v-demo:red="msg">{{msg}}</p>
</div>

<script>
	// 全局指令
    Vue.directive('demo', function (el, binding) {
        console.log(el)      //p標(biāo)簽
        console.log(binding) //輸出的是一個對象obj
        console.log('指令名:'+binding.name)//指令名
        console.log('指令的綁定值:'+binding.value)//指令的綁定值
        console.log('綁定值的字符串形式:'+binding.expression) //綁定值的字符串形式
        console.log('傳給指令的參數(shù):'+binding.arg)//傳給指令的參數(shù)
    })
    var vm = new Vue({
        el: "#app",
        data: {
            msg: 'hello!'
        },
        // 局部指令
        directives:{
			demo:{
				inserted: function (el) {
					console.log(el)
				}      
			}
		}
    })
</script>

這里寫圖片描述

對象字面量

<div id="app">
    <p v-demo="colours">{{colours.text}}</p>
</div>

<script>
    Vue.directive('demo', function (el, binding) {
        console.log(el) // p標(biāo)簽
        console.log(binding) // 輸出的是一個對象obj
        console.log(binding.value) // {color: 'blue',text: 'hello!'}
        console.log(binding.value.color) // 'blue'
        console.log(binding.value.text) // 'hello!'
        el.style = 'color:' + binding.value.color  
    })
    var vm = new Vue({
        el: "#app",
        data: {
            colours: {
                color: 'blue',
                text: 'hello!'
            }
        }
    })
</script>

生命周期鉤子

指令定義函數(shù)提供了幾個鉤子函數(shù)(可選):

  1. bind:只調(diào)用一次,指令第一次綁定到元素時調(diào)用,用這個鉤子函數(shù)可以定義一個綁定時執(zhí)行一次的初始化動作。
  2. inserted:被綁定元素插入父節(jié)點(div#app)時調(diào)用(父節(jié)點存在即可調(diào)用,不必存在于document中)。
  3. update:當(dāng)綁定指令的元素(VNode-虛擬節(jié)點)狀態(tài)發(fā)生改變時觸發(fā)(包括樣式、內(nèi)容、vue數(shù)據(jù)…)
  4. componentUpdated:指令所在的組件的VNode以及其子VNode 全部更新后調(diào)用。
  5. unbind:只調(diào)用一次,指令與元素解綁(元素從DOM中刪除)時調(diào)用。
<div id="app">
    <p v-demo="color">{{num}}</p>
    <button @click="add">增加</button>
    <button onclick='unbind()'>解綁</button>
</div>

<script>
    function unbind() {
        vm.$destroy(); //另外起一個方法解綁
    }
    Vue.directive('demo', { //五個注冊指令的鉤子函數(shù)
        bind: function () { //1.被綁定
	        //做綁定的準(zhǔn)備工作。比如添加事件監(jiān)聽器,或是其他只需要執(zhí)行一次的復(fù)雜操作
            console.log('1 - bind');
        },
        inserted: function () { //2.綁定到節(jié)點
            console.log('2 - inserted');
        },
        update: function () { //3.組件更新
            //根據(jù)獲得的新值執(zhí)行對應(yīng)的更新。對于初始值也會調(diào)用一次
            console.log('3 - update');
        },
        componentUpdated: function () { //4.組件更新完成
            console.log('4 - componentUpdated');
        },
        unbind: function () { //5.解綁
            //做清理操作。比如移除bind時綁定的事件監(jiān)聽器
            console.log('5 - bind');
        }
    })
    var vm = new Vue({
        el: "#app",
        data: {
            num: 10,
            color: 'red'
        },
        methods: {
            add: function () {
                this.num++;
            }
        }
    })
</script>

初始化觸發(fā)方法1和2,點擊增加按鈕觸發(fā)方法3和4,點擊解綁按鈕觸發(fā)方法5,如下圖:

這里寫圖片描述

到此這篇關(guān)于Vue.js directive自定義指令詳解的文章就介紹到這了,更多相關(guān)Vue.js directive自定義指令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue實現(xiàn)導(dǎo)航欄菜單

    Vue實現(xiàn)導(dǎo)航欄菜單

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)導(dǎo)航欄菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Vue+Java 通過websocket實現(xiàn)服務(wù)器與客戶端雙向通信操作

    Vue+Java 通過websocket實現(xiàn)服務(wù)器與客戶端雙向通信操作

    這篇文章主要介紹了Vue+Java 通過websocket實現(xiàn)服務(wù)器與客戶端雙向通信操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue實現(xiàn)圖片預(yù)覽效果實例(放大、縮小、拖拽)

    Vue實現(xiàn)圖片預(yù)覽效果實例(放大、縮小、拖拽)

    現(xiàn)在項目中有這樣的一個需求,對上傳的圖片可以點擊之后在線預(yù)覽,這篇文章主要給大家介紹了關(guān)于Vue實現(xiàn)圖片預(yù)覽效果實例(放大、縮小、拖拽)的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • vscode搭建vue環(huán)境完整圖文教程(適合新手小白)

    vscode搭建vue環(huán)境完整圖文教程(適合新手小白)

    Vue框架的優(yōu)秀設(shè)計和強大的生態(tài)系統(tǒng)成為了越來越多開發(fā)者選擇Vue的原因,在實際項目過程中一個高效的開發(fā)環(huán)境能夠大大提高開發(fā)效率,這篇文章主要給大家介紹了關(guān)于vscode搭建vue環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • vue2響應(yīng)式的缺點影響

    vue2響應(yīng)式的缺點影響

    這篇文章主要介紹了vue2響應(yīng)式的缺點影響,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 教你如何編寫Vue.js的單元測試的方法

    教你如何編寫Vue.js的單元測試的方法

    這篇文章主要介紹了教你如何編寫Vue.js的單元測試的方法,介紹了簡單的單元測試,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 詳解Vue 開發(fā)模式下跨域問題

    詳解Vue 開發(fā)模式下跨域問題

    本篇文章主要介紹了Vue 開發(fā)模式下跨域問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 使用vue-cli創(chuàng)建項目的圖文教程(新手入門篇)

    使用vue-cli創(chuàng)建項目的圖文教程(新手入門篇)

    這篇文章主要介紹了新手入門vue 使用vue-cli創(chuàng)建項目的圖文教程,本文是針對完全不了解過vue和npm的小白而寫的,需要的朋友可以參考下
    2018-05-05
  • 淺談vue中的data與_data的關(guān)系是什么

    淺談vue中的data與_data的關(guān)系是什么

    在Vue實例中,data屬性是用戶定義的用于存儲數(shù)據(jù)的對象,而_data是Vue內(nèi)部用于存儲數(shù)據(jù)的對象,本文主要介紹了淺談vue中的data與_data的關(guān)系是什么,感興趣的可以了解一下
    2023-12-12
  • 手把手教學(xué)vue的路由權(quán)限問題

    手把手教學(xué)vue的路由權(quán)限問題

    這篇文章主要介紹了手把手教學(xué)vue的路由權(quán)限問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論