vue自定义指令的应用场景
发布日期:2022-03-15 19:30:48 浏览次数:8 分类:技术文章

本文共 1511 字,大约阅读时间需要 5 分钟。

使用自定义指令背景

  1. 代码复用和抽象的主要形式是组件。
  2. 当需要对普通 DOM 元素进行底层操作,此时就会用到自定义指令
  3. 但是,对于大幅度的 DOM 变动,还是应该使用组件

常用案例

1、 输入框自动聚焦

// 注册一个全局自定义指令 `v-focus`Vue.directive('focus', {
// 当被绑定的元素插入到 DOM 中时 inserted: function (el) {
// 聚焦元素 el.focus() }})123456789

2 下拉菜单

点击下拉菜单本身不会隐藏菜单

点击下拉菜单以外的区域隐藏菜单

Vue.directive('clickoutside', {
bind(el, binding) {
function documentHandler(e) {
if (el.contains(e.target)) {
return false } if (binding.expression) {
binding.value(e) } } el.__vueMenuHandler__ = documentHandler document.addEventListener('click', el.__vueMenuHandler__) }, unbind(el) {
document.removeEventListener('click', el.__vueMenuHandler__) delete el.__vueMenuHandler__ }})new Vue({
el: '#app', data: {
show: false }, methods: {
handleHide() {
this.show = false } }})
12345678910111213141516171819202122232425262728293031323334353637383940

3. 相对时间转换

类似微博、朋友圈发布动态后的相对时间,比如刚刚、两分钟前等等

new Vue({
el: '#app', data: {
time: 1565753400000 }})Vue.directive('relativeTime', {
bind(el, binding) {
// Time.getFormatTime() 方法,自行补充 el.innerHTML = Time.getFormatTime(binding.value) el.__timeout__ = setInterval(() => {
el.innerHTML = Time.getFormatTime(binding.value) }, 6000) }, unbind(el) {
clearInterval(el.innerHTML) delete el.__timeout__ }})

转载地址:https://blog.csdn.net/weixin_58102387/article/details/122915915 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:关于Spring的解耦合
下一篇:MVVM和MVC的区别

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月01日 05时02分47秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

LeetCode-122. 买卖股票的最佳时机 II(Goland实现) 2021-06-30
LeetCode-136. 只出现一次的数字(Goland实现) 2021-06-30
go-递归实现二叉树的三种排序方式(前序、中序、后序)【详细】 2021-06-30
LeetCode-409. 最长回文串(Goland实现) 2021-06-30
LeetCode-LCP 18. 早餐组合(Goland实现) 2021-06-30
PDF - 如何 PDF 文档在全屏模式同时显示两页 2021-06-30
区块链 - 什么是区块链?这是我见过的最通俗易懂的解释 2019-04-27
区块链 - 侠客岛:终于有人把区块链讲清楚了 2019-04-27
PPT - 如何从 PowerPoint 幻灯片中删除幻灯片编号 2019-04-27
正则表达式 - 匹配任何字符(包括换行符) 2019-04-27
程序人生 - 5G来了!路由器和移动硬盘危险了? 2019-04-27
JS - mescroll.js 下拉刷新使用时应该注意的问题(卡顿,滑不动) 2019-04-27
赚钱 36 计 - 第十五计:扣点计 2019-04-27
赚钱 36 计 - 第十六计:生态计 2019-04-27
赚钱 36 计 - 第十九计:传媒计 2019-04-27
DOS - 批处理之 for /f 中的 delims 和 tokens 2019-04-27
程序人生 - 如何通过劳动仲裁拿到应该的补偿——程序员的维权之路 2019-04-27
Java - java.util.ConcurrentModificationException 异常原因及解决方法 2019-04-27
医学小知识 - 胶囊胃镜一次多少钱?有什么缺点?和普通胃镜有什么区别? 2019-04-27
Java - java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap 2019-04-27