自定义指令基本用法

自定义指令基本用法

      • 1.自定义指令案例一:输入框自动聚焦
      • 2.自定义指令生命周期和参数-修饰符
      • 3.封装全局自定义指令
        • 3.1 创建directive目录,创建index.js,创建format-xx文件
        • 3.1 main.js文件引入并传入全局对象
        • 3.3 组件中引用

自定义指令
Vue可以根据项目实际情况需要自定义指令。
注意:要对DOM元素进行底层操作就会需要自定义指令
自定义指令分为两种:
1. 自定义局部指令:组件中通过directives选项,只能在当前组件使用;
2. 自定义全局指令:app的directive方法,可以任意组件被使用;

1.自定义指令案例一:输入框自动聚焦

<template><div><input type="text" ref="input" v-focus></div>
</template><script>
import { ref, onMounted } from 'vue'export default {// 局部指令directives: {focus: {// 当input元素或者组件挂载到页面上的时候执行mounted(el, bingdings, vnode, preVnode){console.log('focus mounted');el.focus();}}},setup () {const input = ref(null)onMounted(() => {input.value.focus();})return {input}}}
</script>

2.自定义指令生命周期和参数-修饰符

指令的生命周期
created: 在绑定元素的attribute或事件监听器被应用之前调用。
beforeMounted: 当指令第一次绑定到元素并且在挂载父组件之前调用;
mounted: 在绑定元素的父组件被挂载后调用;
beforeUpdate: 在更新包含自建的VNode之前调用;
updated: 在包含组件的VNode及其子组件的VNode更新后调用;
beforeUnmount: 在卸载绑定元素的父组件之前调用;
unmounted: 当指令与元素解除绑定且父组件已卸载时,只调用一次

<template><div><input type="text" ref="input" v-focus><button v-why.aaaa.bbb="'coderwhy'" v-if="counter < 2 " @click="incremnt">当前计数;{{ counter }}</button></div>
</template><script>
import { ref, onMounted } from 'vue'export default {// 局部指令directives: {// focus: {//   // 当input元素或者组件挂载到页面上的时候执行//  mounted(el, bingdings, vnode, preVnode){//   console.log('focus mounted');//   el.focus();//  }// }why: {created (el,bingdings,vnode,preVnode) {console.log('why created',el,bingdings,vnode,preVnode);console.log(bingdings.value); // 取传参console.log(bingdings.modifiers); // 取修饰符},beforeMount () {console.log('why beforeMount');},mounted () {console.log('why mounted');},beforeUpdate () {console.log('why beforeUpdate');},updated () {console.log('why updated');},beforeUnmount () {console.log('why beforeUnmount');},unmounted () {console.log('why unmounted');}}},setup () {const input = ref(null)const counter = ref(0)const incremnt = () => {counter.value++}onMounted(() => {input.value.focus();})return {input,counter,incremnt}}}
</script>

3.封装全局自定义指令

3.1 创建directive目录,创建index.js,创建format-xx文件
// 1.index.js
import formatTime from './format-time'
export default function registerDirectives (app) {formatTime(app)
}// 2.format-time.js
import dayjs from 'dayjs'
export default function (app) {let formatString = 'YYYY-MM-DD HH:mm:ss'app.directive('format-time',{created(el,bingdings){if(bingdings.value){formatString = bingdings.value}},mounted(el,bingdings){console.log('format-time');let textContent = el.textContent;let timeStamp = parseInt(textContent);if(textContent.length === 10){  el.textContent = timeStamp * 1000;}el.textContent = dayjs(timeStamp).format(formatString)}})
}
3.1 main.js文件引入并传入全局对象
import registerDirectives from './11_自定义指令/directive'
registerDirectives(app)
3.3 组件中引用
<template><div><input type="text" ref="input" v-focus><button v-why.aaaa.bbb="'coderwhy'" v-if="counter < 2 " @click="incremnt">当前计数;{{ counter }}</button><h2 v-format-time="'YYYY/MM/DD HH:mm:ss'">{{ timeStamp }}</h2></div>
</template><script>
import { ref, onMounted } from 'vue'export default {// 局部指令directives: {setup () {const timeStamp = 1715001108724return {timeStamp}}}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode通过SSH连接虚拟机Ubuntu失败

问题说明 最近使用VSCode通过SSH连接Ubuntu&#xff0c;通过VSCode访问Ubuntu进行项目开发&#xff0c;发现连接失败 在VSCode中进行SSH配置 这些都没有问题&#xff0c;但在进行连接时候出现了问题&#xff0c;如下&#xff1a; 出现了下面这个弹窗 解决方法 发现当…

【c1】数据类型,运算符/循环,数组/指针,结构体,main参数,static/extern,typedef

文章目录 1.数据类型&#xff1a;编译器&#xff08;compiler&#xff09;与解释器&#xff08;interpreter&#xff09;&#xff0c;中文里的汉字和标点符号是两个字节&#xff0c;不能算一个字符&#xff08;单引号&#xff09;2.运算符/循环&#xff1a;sizeof/size_t3.数组…

python类型之string上篇

使用单引号 string1 This is a string in single quotes. print(string1)使用双引号 string2 "This is a string in double quotes." print(string2)使用三引号&#xff08;多行字符串&#xff09; string3 This is a multi-linestring in triple quotes&#…

在.NET架构的Winform项目中引入“异步编程”思想和技术

在.NET架构的Winform项目中引入“异步编程”思想和技术 一、异步编程引入&#xff08;1&#xff09;异步编程引入背景&#xff08;2&#xff09;异步编程程序控制流图&#xff08;3&#xff09;异步编程前置知识&#xff1a; 二、异步编程demo步骤1&#xff1a;步骤2&#xff1…

Kafka源码分析(五) - Server端 - 基于时间轮的延时组件

系列文章目录 Kafka源码分析-目录 一. 背景 Kafka内部涉及大量的"延时"操作&#xff0c;比如收到PRODUCE请求后可为副本等待一个timeout的时间后再响应客户端。 那我们讨论一个问题&#xff1a;Kafka为什么自己实现了一个延时任务组件&#xff0c;而不直接使用ja…

微信个人号开发api接口-视频号矩阵接口-VIdeosApi

友情链接&#xff1a;VIdeosApi 获取用户主页 接口地址&#xff1a; http://api.videosapi.com/finder/v2/api/finder/userPage 入参 { "appId": "{{appid}}", "lastBuffer": "", "toUserName": "v2_060000231003b2…

「PHP系列」PHP MySQL 预处理语句/读取数据/Where子句

文章目录 一、PHP MySQL 预处理语句二、PHP MySQL 读取数据三、PHP MySQL Where子句四、相关链接 一、PHP MySQL 预处理语句 在 PHP 中使用 MySQL 预处理语句&#xff08;prepared statements&#xff09;是一种推荐的方式来执行数据库操作&#xff0c;特别是当涉及到用户输入…

网络基础-华为VRP基础CLI操作

基本命令模式 华为设备的命令行模式包括用户视图和特权级模式。 用户视图&#xff08;User View&#xff09;&#xff1a;这是用户登录到华为设备时默认进入的模式。在用户视图下&#xff0c;用户可以执行一些基本的查看命令&#xff0c;但不能进行设备配置或管理。提示符通常…

Golang | Leetcode Golang题解之第72题编辑距离

题目&#xff1a; 题解&#xff1a; func minDistance(word1 string, word2 string) int {m, n : len(word1), len(word2)dp : make([][]int, m1)for i : range dp {dp[i] make([]int, n1)}for i : 0; i < m1; i {dp[i][0] i // word1[i] 变成 word2[0], 删掉 word1[i], …

U盘提示“被写保护”无法操作处理怎么办?

今天在使用U盘复制拷贝文件时&#xff0c;U盘出现“U盘被写保护”提示&#xff0c;导致U盘明明有空闲内存却无法复制的情况。这种情况很常见&#xff0c;很多人在插入U盘到电脑后&#xff0c;会出现"U盘被写保护"的提示&#xff0c;导致无法进行删除、保存、复制等操…

Junit 测试中如何对异常进行断言

本文对在 Junit 测试中如何对异常进行断言的几种方法进行说明。 使用 Junit 5 如果你使用 Junit 5 的话&#xff0c;你可以直接使用 assertThrows 方法来对异常进行断言。 代码如下&#xff1a; Exception exception assertThrows(NumberFormatException.class, () -> {n…

pycharm关闭代码补全

pycharm关闭代码补全 文件-设置 编辑器-常规-代码补全-键入时显示建议

pyecharts绘制世界动态轨迹图(v0.5.X与v1.X版本对比)

一、问题引入 pyecharts官网&#xff1a;https://pyecharts.org/#/zh-cn/intro 在使用Geo或者GeoLines绘制动态轨迹图时&#xff0c;如果所选地区是中国的省份或者城市&#xff0c;是能够匹配到对应的经纬度并且正常绘制的&#xff1b;如果所选地区涉及到其他国家或者国外城市&…

监控公司局域网电脑的软件|局域网电脑监控软件哪个好用

想要监控公司局域网电脑&#xff1f;没问题&#xff0c;市面上有一大堆选择等着你&#xff01;每个软件都有它的独门绝技和适用场合&#xff0c;接下来就让我带你看看哪些软件既好用又功能强大吧&#xff01; &#x1f389;OpManager&#xff1a; 这位大佬适合中大型企业&#…

C语言 | Leetcode C语言题解之第73题矩阵置零

题目&#xff1a; 题解&#xff1a; void setZeroes(int** matrix, int matrixSize, int* matrixColSize) {int m matrixSize;int n matrixColSize[0];int flag_col0 false;for (int i 0; i < m; i) {if (!matrix[i][0]) {flag_col0 true;}for (int j 1; j < n; j…

【go从入门到精通】由检查一个空结构体引发的思考?

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C++,go等语言开发经验,mysql,mongo,redis等数据库,设计模式和网络库开发经验,对战棋类,回合制,moba类页游,手游有丰富的架构设计和开发经验。 (谢谢你的关注…

用wordpress为外贸进出口公司搭建多语言国际站

使用WordPress为外贸进出口公司搭建多语言国际站是一个很好的选择&#xff0c;因为WordPress不仅易于使用&#xff0c;而且具有丰富的插件和主题&#xff0c;可以支持多语言内容。以下是搭建多语言国际站的步骤和建议&#xff1a; 安装WordPress&#xff1a;首先&#xff0c;您…

Unity 性能优化之遮挡剔除(Occlusion Culling)(六)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、遮挡剔除是什么&#xff1f;二、静态遮挡剔除的使用步骤1.标记为遮挡剔除对象2.创建Occlusion Area组件3.烘焙4.Occlusion窗口Bake的参数Smallest Oc…

后台启动HIVE的JDBC连接

后台启动HIVE的JDBC连接 生活就像一杯咖啡&#xff0c;有时苦涩&#xff0c;有时香甜&#xff0c;但都是值得品味的经历。无论遇到什么挑战&#xff0c;记住在每一天的开始&#xff0c;你都有机会给自己倒上一杯清新的力量&#xff0c;为心灵添一抹温暖。勇敢地面对生活的苦与甜…

(第11天)【leetcode题解】344、反转字符串 541、反转字符串II #替换数字

目录 344、反转字符串题目描述思路代码 反转字符串II题目描述思路代码 替换数字题目描述思路代码 344、反转字符串 题目描述 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必…