網站首頁 Vue 正文
自定義指令directives及常用鉤子函數
說明
除了核心功能默認內置的指令 (v-model 和 v-show),Vue 也允許注冊自定義指令
使用的地方:有的情況下,你仍然需要對普通 DOM 元素進行底層操作,這時候就會用到自定義指令
鉤子函數
-
inserted
:被綁定元素插入父節點時調用 (僅保證父節點存在,但不一定已被插入文檔中)。 -
bind
:只調用一次,指令第一次綁定到元素時調用。在這里可以進行一次性的初始化設置。 -
update
: 所在組件的 VNode 更新時調用,但是可能發生在其子 VNode 更新之前。指令的值可能發生了改變,也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新。 -
componentUpdated
:指令所在組件的 VNode 及其子 VNode 全部更新后調用。 -
unbind
:只調用一次,指令與元素解綁時調用。
vue 全局定義
使用:<span v-指令名稱> welcome </span> 也可以 v-指令名稱="傳遞的參數"
定義:Vue.directive(指令名稱,{指令鉤子:功能函數})
<div id="root"> ? ? ? ? <span v-red>welcome</span> ? ? </div> ? ? <script type="text/javascript"> ? ? ? ? Vue.directive('red',{ ? ? ? //定義 ??? ? ? ? ? ? ? inserted:function(el){ ?//鉤子函數 ??? ? ? ? ? ? ? ? ? el.style.background = 'red'; ? ? ? ? ? ? } ? ? ? ? }); ? ? ? ? var vm = new Vue({ ? ? ? ??? ??? ?el:"#root" ? ? ? ? ? ? data:{ ? ? ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? }) ? ? </script>
局部定義(vue-cli)
使用:<div v-指令名稱='傳遞的參數'></div> // 傳遞參數可以根據功能需求進行操作
定義:directives{指令名稱:{鉤子函數:功能函數}}
<template> ? <div class="hello"> ? ?? ?<div v-test='name'></div> ? </div> </template> <script> export default { ? data () { ? ? return { ? ? ?name:'userName', ? ? } ? }, ? directives:{ ? ? //自定義指令 ??? ? ?? ?test:{ ?? ? ? ?inserted: function (el,binding) { //e為綁定元素,可以對其進行dom操作 ?? ? ? ? ? console.log(binding) ? ? ? ? ?//一個對象,包含很多屬性屬性(在下面) ?? ? ? ?}, ?? ? ? ?bind: function (el, binding, vnode) { ?? ??? ? ? ?el.innerHTML =binding.value ?? ??? ? ?} ? ?? ?} ? }, ? methods:{ ??? ?... ... ? } } </script>
鉤子函數里面的參數
-
el
:指令所綁定的元素,可以用來直接操作 DOM。 -
binding
:一個對象,包含以下 property:
name
:指令名,不包括 v- 前綴。
value
:指令的綁定值,例如:v-my-directive=“1 + 1” 中,綁定值為 2。
oldValue
:指令綁定的前一個值,僅在 update 和 componentUpdated 鉤子中可用。無論值是否改變都可用。
expression
:字符串形式的指令表達式。例如 v-my-directive=“1 + 1” 中,表達式為 “1 + 1”。
arg
:傳給指令的參數,可選。例如 v-my-directive:foo 中,參數為 “foo”。
modifiers
:一個包含修飾符的對象。例如:v-my-directive.foo.bar 中,修飾符對象為 { foo: true, bar: true }。
-
vnode
:Vue 編譯生成的虛擬節點。 -
oldVnode
:上一個虛擬節點,僅在 update 和 componentUpdated 鉤子中可用。
vue?自定義指令 directives選項
directives選項中定義 指令
使用時添加v-前綴
全局注冊
app.directive('xxx',{})
支持動態指令參數
v-xx:[abc]='xxx'
指令函數能夠接受所有合法的 JavaScript 表達式。
如果方法只需要在 mounted 和 updated 的時間鉤子觸發
可以簡寫為單純的回調函數
參數說明
第一個參數 為綁定的元素
第二個參數 為傳遞的對象
-
.arg
綁定的參數 -
.value
等號后對應的值
在應用到組件上時,和非 prop 的 attribute不同,指令不會通過 v-bind="$attrs" 被傳入另一個元素。
當被應用在一個多根節點的組件上時,指令會被忽略,并且會拋出一個警告。
原文鏈接:https://blog.csdn.net/qq_44163269/article/details/107508091
相關推薦
- 2022-07-01 docker搭建mongodb單節點副本集的實現_docker
- 2022-06-07 Python接口自動化之文件上傳/下載接口詳解_python
- 2022-11-18 Kotlin?HttpURLConnection與服務器交互實現方法詳解_Android
- 2022-07-26 Spring底層核心原理解析
- 2022-07-09 docker安裝nginx并部署前端項目的全過程_docker
- 2022-06-22 詳解Linux下find查找文件命令和grep查找文件命令_linux shell
- 2022-12-10 Input系統之InputReader處理合成事件詳解_Android
- 2022-12-09 ReactQuery系列之數據轉換示例詳解_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支