Vue中的directive指令快速使用
一、用法:注冊或獲取全局指令
Vue.directive(id,[definition])
除了核心功能默認(rèn)內(nèi)置的指令 (v-model 和 v-show),Vue 也允許注冊自定義指令。注意,在 Vue2.0 中,代碼復(fù)用和抽象的主要形式是組件。
然而,有的情況下,你仍然需要對普通 DOM 元素進行底層操作,這時候就會用到自定義指令。
二、鉤子函數(shù)
一個指令定義對象可以提供如下幾個鉤子函數(shù)(均為可選):
bind
:只調(diào)用一次,指令第一次綁定到元素時調(diào)用。在這里可以進行一次性的初始化設(shè)置。inserted
:被綁定元素插入父節(jié)點時調(diào)用(僅保證父節(jié)點存在,但不一定已被 插入文檔中)。update
:所在組件的vNode更新時調(diào)用,但是可能發(fā)生在其子vNode更新之前。指令的值可能發(fā)生了改變,也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新。componentUpdated
:指令所在組件的 VNode 及其子 VNode 全部更新后調(diào)用。unbind
:只調(diào)用一次,指令與元素解綁時調(diào)用。
// 注冊 Vue.directive('my-directive',{ bind: function () {}, inserted: function () {}, update: function () {}, componentUpdated: function () {}, unbind: function() {} })
鉤子函數(shù)參數(shù):
使用property的自定義鉤子樣例:
<template> <div class="content"> <div id="hook-arguments-example" v-demo:foo.a.b="message"></div> </div> </template> <script> export default { name: 'Content', data(){ return{ message: 'hello!' } }, directives: { demo:{ bind: function (el, binding, vnode) { var s = JSON.stringify el.innerHTML = 'name: ' + s(binding.name) + '<br>' + 'value: ' + s(binding.value) + '<br>' + 'expression: ' + s(binding.expression) + '<br>' + 'argument: ' + s(binding.arg) + '<br>' + 'modifiers: ' + s(binding.modifiers) + '<br>' + 'vnode keys: ' + Object.keys(vnode).join(', ') } } } } </script>
頁面顯示:
三、快速使用-----獲取input框的焦點
1.全局指令
在main.js總注冊:
Vue.directive('focus',{ // 當(dāng)綁定元素插入到 DOM 中 inserted: function(el) { el.focus(); } }) new Vue({ router, store, render: h => h(App), }).$mount('#app')
頁面引入:
<template> <div class="content"> <input type="text" v-focus/> </div> </template>
2.局部指令
<template> <div class="content"> <input type="text" v-focus/> </div> </template> <script> export default { name: 'Content', directives: { focus: { // 指令的定義 inserted: function(el) { el.focus(); } } } } </script>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue3的介紹和兩種創(chuàng)建方式詳解(cli和vite)
這篇文章主要介紹了vue3的介紹和兩種創(chuàng)建方式(cli和vite),vue3對比vue2帶來的性能提升有很多優(yōu)勢,總體來說Vue 3在性能、開發(fā)體驗和代碼組織方面都有所改進,使得它更加適合于大型、復(fù)雜的應(yīng)用程序開發(fā),需要的朋友可以參考下2023-04-04vue實現(xiàn)excel文件的導(dǎo)入和讀取完整步驟
Vue的數(shù)據(jù)綁定功能非常強大,很適合用來讀取Excel內(nèi)容,這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)excel文件的導(dǎo)入和讀取的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10vue.js實現(xiàn)開關(guān)(switch)組件實例代碼
這篇文章介紹了vue.js實現(xiàn)開關(guān)(switch)組件的實例代碼,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06laravel5.4+vue+element簡單搭建的示例代碼
本篇文章主要介紹了laravel5.4+vue+element簡單搭建的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08Vue Router 實現(xiàn)動態(tài)路由和常見問題及解決方法
動態(tài)路由不同于常見的靜態(tài)路由,可以根據(jù)不同的「因素」而改變站點路由列表。這篇文章主要介紹了Vue Router 實現(xiàn)動態(tài)路由和常見問題解決方案,需要的朋友可以參考下2020-03-03Vue3實現(xiàn)SSE(Server-Sent?Events)連接
SSE?是一種允許服務(wù)器向瀏覽器推送事件的技術(shù),這篇文章主要為大家詳細(xì)介紹了如何通過vue3實現(xiàn)SSE(Server-Sent?Events)連接,有需要的小伙伴可以了解下2024-10-10vue3實現(xiàn)在新標(biāo)簽中打開指定網(wǎng)址的方法
我希望點擊查看按鈕的時候,能夠在新的標(biāo)簽頁面打開這個文件的地址進行預(yù)覽,該如何實現(xiàn)呢,下面小編給大家?guī)砹嘶趘ue3實現(xiàn)在新標(biāo)簽中打開指定的網(wǎng)址,感興趣的朋友跟隨小編一起看看吧2024-07-07