vue全局指令文件?directives詳解
前言
在 Vue.js
中,全局指令允許你定義一些可以在整個(gè)應(yīng)用中重復(fù)使用的自定義指令。這些指令通常用于操作 DOM
元素,比如修改樣式、綁定事件、或者執(zhí)行一些特定的 DOM
操作。
一、什么是全局指令?
全局指令是通過 Vue.directive
方法定義的,可以在任何 Vue
組件中使用。與局部指令(在組件內(nèi)部定義的指令)不同,全局指令在整個(gè)應(yīng)用中都可用。
二、如何定義全局指令?
你可以在一個(gè)單獨(dú)的文件中定義全局指令,然后在應(yīng)用的入口文件(如 main.js
或 main.ts
)中引入并注冊(cè)這些指令。
示例:創(chuàng)建一個(gè)全局指令文件 directives.js
// directives.js import Vue from 'vue'; // 定義一個(gè)全局指令 v-focus Vue.directive('focus', { // 當(dāng)綁定元素插入到 DOM 中時(shí)調(diào)用 inserted(el) { // 聚焦元素 el.focus(); } }); // 定義一個(gè)全局指令 v-color Vue.directive('color', { // 當(dāng)綁定元素插入到 DOM 中時(shí)調(diào)用 inserted(el, binding) { // 根據(jù)傳入的值設(shè)置元素的顏色 el.style.color = binding.value; } });
在 main.js
中引入并注冊(cè)全局指令
// main.js import Vue from 'vue'; import App from './App.vue'; import './directives'; // 引入全局指令文件 new Vue({ render: h => h(App), }).$mount('#app');
三、使用全局指令
在組件中,你可以直接使用這些全局指令。
<template> <div> <!-- 使用 v-focus 指令 --> <input v-focus type="text" placeholder="自動(dòng)聚焦的輸入框"> <!-- 使用 v-color 指令 --> <p v-color="'red'">這段文字會(huì)變成紅色</p> </div> </template> <script> export default { name: 'MyComponent' } </script>
四、指令的生命周期鉤子
Vue 指令有以下幾個(gè)生命周期鉤子:
- 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 更新之前。
- componentUpdated:所在組件的 VNode 及其子 VNode 全部更新后調(diào)用。
- unbind:只調(diào)用一次,指令與元素解綁時(shí)調(diào)用。
五、指令的參數(shù)
指令鉤子函數(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 }
。
- name:指令名,不包括
六、示例:使用修飾符和參數(shù)
// directives.js Vue.directive('demo', { bind(el, binding) { console.log('指令名:', binding.name); // 'demo' console.log('綁定值:', binding.value); // 'hello' console.log('表達(dá)式:', binding.expression); // 'message' console.log('參數(shù):', binding.arg); // 'foo' console.log('修飾符:', binding.modifiers); // { bar: true } } });
<template> <div v-demo:foo.bar="message"></div> </template> <script> export default { data() { return { message: 'hello' }; } } </script>
七、總結(jié)
- 全局指令是通過
Vue.directive
方法定義的,可以在整個(gè)應(yīng)用中使用。 - 你可以在一個(gè)單獨(dú)的文件中定義全局指令,然后在應(yīng)用的入口文件中引入。
- 指令有多個(gè)生命周期鉤子,可以在不同的階段執(zhí)行不同的操作。
- 指令可以接收參數(shù)和修飾符,使得指令更加靈活。
通過全局指令,你可以將一些常見的 DOM
操作封裝成指令,提高代碼的復(fù)用性和可維護(hù)性。
到此這篇關(guān)于vue里的全局指令文件 directives的文章就介紹到這了,更多相關(guān)vue全局指令文件 directives內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue3實(shí)現(xiàn)全局loading指令的示例詳解
- vue全局注冊(cè)自定義指令防抖解析
- vue全局自定義指令和局部自定義指令的使用
- Vue全局自定義指令Modal拖拽的實(shí)踐
- vue全局自定義指令-元素拖拽的實(shí)現(xiàn)代碼
- vue directive定義全局和局部指令及指令簡(jiǎn)寫
- 對(duì)Vue2 自定義全局指令Vue.directive和指令的生命周期介紹
- vue3的自定義指令directives實(shí)現(xiàn)
- vue 自定義指令directives及其常用鉤子函數(shù)說明
- vue?filters和directives訪問this的問題詳解
- vue通過指令(directives)實(shí)現(xiàn)點(diǎn)擊空白處收起下拉框
- 詳解vue + vuex + directives實(shí)現(xiàn)權(quán)限按鈕的思路
相關(guān)文章
15 分鐘掌握vue-next函數(shù)式api(小結(jié))
這篇文章主要介紹了15 分鐘掌握vue-next函數(shù)式api(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Vue?Axios請(qǐng)求取消和重發(fā)封裝的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue?Axios請(qǐng)求取消和重發(fā)的封裝的實(shí)現(xiàn),文章通過代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-09-09vue+element加入簽名效果(移動(dòng)端可用)
這篇文章主要介紹了vue+element加入簽名效果(移動(dòng)端),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06詳解element-ui表格的合并行和列(非常細(xì)節(jié))
最近在需求中遇到了elementUI合并行,索性給大家整理下,這篇文章主要給大家介紹了關(guān)于element-ui表格的合并行和列的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06使用vue深度選擇器修改ElementUI組件內(nèi)樣式的示例代碼
在帶有scoped屬性的style中書寫樣式時(shí),無法作用影響到子組件中的樣式,此時(shí)我們會(huì)使用到deep深度選擇器,來解決此問題,我們?cè)谑褂胠ess預(yù)處理器,能正常使用,但是在scss預(yù)處理器中會(huì)報(bào)錯(cuò),下面通過本文介紹vue深度選擇器修改ElementUI組件內(nèi)樣式,需要的朋友可以參考下2022-12-12