最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue.js directive自定義指令詳解

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

自定義一個(gè)demo指令

Vue自定義指令語(yǔ)法如下:

Vue.directive(id, definition)

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

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

<script>
	// 注冊(cè)一個(gè)全局自定義指令 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) //輸出的是一個(gè)對(duì)象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>

這里寫(xiě)圖片描述

對(duì)象字面量

<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) // 輸出的是一個(gè)對(duì)象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ù)提供了幾個(gè)鉤子函數(shù)(可選):

  1. bind:只調(diào)用一次,指令第一次綁定到元素時(shí)調(diào)用,用這個(gè)鉤子函數(shù)可以定義一個(gè)綁定時(shí)執(zhí)行一次的初始化動(dòng)作。
  2. inserted:被綁定元素插入父節(jié)點(diǎn)(div#app)時(shí)調(diào)用(父節(jié)點(diǎn)存在即可調(diào)用,不必存在于document中)。
  3. update:當(dāng)綁定指令的元素(VNode-虛擬節(jié)點(diǎn))狀態(tài)發(fā)生改變時(shí)觸發(fā)(包括樣式、內(nèi)容、vue數(shù)據(jù)…)
  4. componentUpdated:指令所在的組件的VNode以及其子VNode 全部更新后調(diào)用。
  5. unbind:只調(diào)用一次,指令與元素解綁(元素從DOM中刪除)時(shí)調(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(); //另外起一個(gè)方法解綁
    }
    Vue.directive('demo', { //五個(gè)注冊(cè)指令的鉤子函數(shù)
        bind: function () { //1.被綁定
	        //做綁定的準(zhǔn)備工作。比如添加事件監(jiān)聽(tīng)器,或是其他只需要執(zhí)行一次的復(fù)雜操作
            console.log('1 - bind');
        },
        inserted: function () { //2.綁定到節(jié)點(diǎn)
            console.log('2 - inserted');
        },
        update: function () { //3.組件更新
            //根據(jù)獲得的新值執(zhí)行對(duì)應(yīng)的更新。對(duì)于初始值也會(huì)調(diào)用一次
            console.log('3 - update');
        },
        componentUpdated: function () { //4.組件更新完成
            console.log('4 - componentUpdated');
        },
        unbind: function () { //5.解綁
            //做清理操作。比如移除bind時(shí)綁定的事件監(jiān)聽(tīng)器
            console.log('5 - bind');
        }
    })
    var vm = new Vue({
        el: "#app",
        data: {
            num: 10,
            color: 'red'
        },
        methods: {
            add: function () {
                this.num++;
            }
        }
    })
</script>

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

這里寫(xiě)圖片描述

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

相關(guān)文章

  • vue3中的 $attrs 與 Attributes 繼承

    vue3中的 $attrs 與 Attributes 繼承

    這篇文章主要介紹了vue3中的 $attrs 與 Attributes 繼承的相關(guān)資料,首先介紹了什么是Attributes 繼承,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • vue中使用帶隱藏文本信息的圖片、圖片水印的方法

    vue中使用帶隱藏文本信息的圖片、圖片水印的方法

    這篇文章主要介紹了vue中使用帶隱藏文本信息的圖片、圖片水印的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Vue3 中的 Vue-Router 和 VueX詳解

    Vue3 中的 Vue-Router 和 VueX詳解

    VueX 提供了一個(gè)全局都可以使用的數(shù)據(jù)管理倉(cāng)庫(kù),不用考慮父子傳值之類(lèi)的問(wèn)題,并且可以跨頁(yè)面?zhèn)鬟f數(shù)據(jù),提高了可維護(hù)性,這篇文章主要介紹了Vue3 中的 Vue-Router 和 VueX,需要的朋友可以參考下
    2022-12-12
  • Vue之表單事件數(shù)據(jù)綁定詳解

    Vue之表單事件數(shù)據(jù)綁定詳解

    這篇文章主要為大家介紹了Vue之表單事件的數(shù)據(jù)綁定,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助,希望能夠給你帶來(lái)幫助
    2021-11-11
  • vue-cli中vue本地實(shí)現(xiàn)跨域調(diào)試接口

    vue-cli中vue本地實(shí)現(xiàn)跨域調(diào)試接口

    這篇文章主要介紹了vue-cli中vue本地實(shí)現(xiàn)跨域調(diào)試接口,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • element組件el-date-picker禁用當(dāng)前時(shí)分秒之前的日期時(shí)間選擇

    element組件el-date-picker禁用當(dāng)前時(shí)分秒之前的日期時(shí)間選擇

    本文主要介紹了element組件el-date-picker禁用當(dāng)前時(shí)分秒之前的日期時(shí)間選擇,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)4

    Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)4

    這篇文章主要介紹了Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)的相關(guān)資料,介紹了Array的變異方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • vue中配置mint-ui報(bào)css錯(cuò)誤問(wèn)題的解決方法

    vue中配置mint-ui報(bào)css錯(cuò)誤問(wèn)題的解決方法

    本篇文章主要介紹了vue中配置mint-ui報(bào)css錯(cuò)誤問(wèn)題的解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10
  • el-form表單驗(yàn)證的一些實(shí)用方法總結(jié)

    el-form表單驗(yàn)證的一些實(shí)用方法總結(jié)

    表單校驗(yàn)是注冊(cè)環(huán)節(jié)中必不可少的操作,表單校驗(yàn)通過(guò)一定的規(guī)則來(lái)確保用戶(hù)提交數(shù)據(jù)的有效性,下面這篇文章主要給大家介紹了關(guān)于el-form表單驗(yàn)證的一些實(shí)用方法,需要的朋友可以參考下
    2023-01-01
  • vue2中前端實(shí)現(xiàn)語(yǔ)音播報(bào)的詳細(xì)過(guò)程

    vue2中前端實(shí)現(xiàn)語(yǔ)音播報(bào)的詳細(xì)過(guò)程

    vue中語(yǔ)音播報(bào),目前本人寫(xiě)的過(guò)程中,遇到了兩種情況,第一種是后端直接返回一個(gè)mp3的播放url,第二種就是播報(bào)的內(nèi)容需要前端自己拼接的,關(guān)于兩種方法,我都說(shuō)一下如何實(shí)現(xiàn),感興趣的朋友一起看看吧
    2024-07-07

最新評(píng)論

尚义县| 新闻| 腾冲县| 临汾市| 九龙坡区| 上高县| 仲巴县| 兖州市| 泰和县| 天门市| 德化县| 杭锦旗| 墨玉县| 文昌市| 庆云县| 阜城县| 七台河市| 太原市| 米易县| 法库县| 西充县| 开原市| 宾川县| 邳州市| 隆德县| 鹤岗市| 十堰市| 汾西县| 九江县| 曲周县| 阳朔县| 南木林县| 南川市| 琼结县| 洮南市| 青州市| 乌恰县| 汪清县| 长子县| 华安县| 瑞安市|