vue自定义指令(图文示例)

在这里插入图片描述

第085个

查看专栏目录: VUE


Vue 自定义指令是一种用于扩展 Vue 模板功能的强大工具。通过自定义指令,你可以在 Vue 模板中添加自定义的行为和逻辑,使模板更加灵活和可定制。

以下是对 Vue 自定义指令的详细解释,并提供一个示例代码来帮助你更好地理解:

定义自定义指令:在 Vue 项目中,定义自定义指令需要创建一个全局或局部的指令对象。指令对象包含几个关键属性,如bind、inserted、update和unbind等,用于处理指令的不同生命周期阶段。

   Vue.directive('myDirective', {
   
     bind: function(el, binding, vnode) {
   
       // 指令绑定时的逻辑
     },
     inserted: function(el, binding, vnode) {
   
       // 元素插入时的逻辑
     },
     update: function(el, binding, vnode) {
   
       // 数据更新时的逻辑
     },
     unbind: function(el) {
   
       // 指令解绑时的逻辑
     }
   });
  • bind:指令绑定到元素时触发。这个阶段可以进行初始化操作,例如获取元素、设置数据等。
  • inserted:元素插入到 DOM 时触发。可以在这个阶段执行与元素插入相关的操作,如添加事件监听器等。
  • update:当绑定的数据发生变化时触发。可以在这里根据数据的变化更新元素的状态。
  • unbind:指令从元素解绑时触发。这个阶段可以进行清理操作,如移除事件监听器等。
    通过在指令对象的不同方法中编写相应的逻辑,可以实现各种自定义的行为和功能。

示例效果图

在这里插入图片描述

示例源代码

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-02-17
*/

<template>
	<div class="djs-box">
		<div class="topBox">
			<h3>vue自定义指令(图文示例)</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
		</div>

		<div class="dajianshi" id="dajianshi">
			<h4>
				选择结束时间:<el-date-picker v-model="endTime" type="datetime" placeholder="选择日期时间">
				</el-date-picker>
			</h4>
			<h4 v-countdown="endTime"></h4>
		</div>
	</div>
</template>

<script>
	import dayjs from "dayjs";
	export default {
   
		data() {
   
			return {
   
				endTime: new Date(),
				timer:null,
			}

		},

		directives: {
   
			countdown: {
   
				update: (el, binding) => {
   
					console.log(el);
					console.log(binding)
					let timer=null;
					if(timer!=null){
   
						clearInterval(timer);
					}
					
					let usedTime = binding.value.getTime();

					timer = setInterval(function() {
   
						var now = new Date().getTime();
						var remainingTime = usedTime - now;
						if (remainingTime < 0) {
   
							clearInterval(timer);
					  el.innerHTML = '倒计时已经结束';
						} else {
   
							el.innerHTML = ' 时间倒计时:' + Math.floor(remainingTime / 1000)+'秒';
						}
					}, 1000);
				}
			},
		}

	}
</script>
<style scoped>
	.djs-box {
   
		width: 1000px;
		height: 650px;
		margin: 50px auto;
		border: 1px solid darkcyan;
	}

	.topBox {
   
		margin: 0 auto 0px;
		padding: 10px 0 20px;
		background: darkcyan;
		color: #fff;
	}

	.dajianshi {
   
		width: 93%;
		height: 470px;
		margin: 5px auto 0;
		border: 1px solid #369;
		background-color: cde;
		padding: 20px;
	}

</style>


API 参考网址

https://v2.cn.vuejs.org/v2/guide/custom-directive.html

相关推荐

  1. Vue定义指令

    2024-02-19 04:50:01       28 阅读
  2. Vue定义指令

    2024-02-19 04:50:01       31 阅读
  3. Vue-------定义指令

    2024-02-19 04:50:01       17 阅读
  4. Vue定义指令

    2024-02-19 04:50:01       8 阅读
  5. Vue3图片懒加载封装定义指令

    2024-02-19 04:50:01       11 阅读
  6. (详解)Vue定义指令

    2024-02-19 04:50:01       40 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-19 04:50:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-19 04:50:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-19 04:50:01       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-19 04:50:01       20 阅读

热门阅读

  1. 学习总结18

    2024-02-19 04:50:01       29 阅读
  2. MySQL事务

    2024-02-19 04:50:01       31 阅读
  3. 两点共线问题

    2024-02-19 04:50:01       30 阅读
  4. Leetcode 11-15题

    2024-02-19 04:50:01       31 阅读
  5. 使用@Transactional注解实现基于注解的事务管理

    2024-02-19 04:50:01       28 阅读
  6. 力扣代码学习日记四

    2024-02-19 04:50:01       35 阅读
  7. 最长公共子序列和最长公共子串

    2024-02-19 04:50:01       40 阅读