首页 > 其他分享 >常用directive,防止重复点击,点击盒子外部触发的事件,不换行省略号 ,移上去显示详情

常用directive,防止重复点击,点击盒子外部触发的事件,不换行省略号 ,移上去显示详情

时间:2024-04-19 09:57:08浏览次数:22  
标签:el style Vue directive 省略号 移上去 binding 点击 div

import Vue from "vue";
import store from "../../store";
import { debounce } from "throttle-debounce";
Vue.directive("demo", {
  bind: function(el, binding, vnode) {
    console.log("bind");
    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(", ");
  }
});
// 可以让他的父级盒子  子级盒子  或者自身滚回原处  并且可以传入一个数值 设置他的高度 当父子同时设置的时候 以父盒子为准
Vue.directive("scroll", {
  componentUpdated: function(el, binding) {
    Vue.nextTick().then(() => {
      let div = "";
      if (binding.modifiers.children) {
        div = el.children;
      }
      if (binding.modifiers.parent) {
        div = el.parentElement;
      }
      if (!binding.modifiers.parent && !binding.modifiers.children) {
        div = el;
      }
      div.scrollTop = "0";
      if (!isNaN(binding.value)) {
        div.style.maxHeight = binding.value + "px";
      }
      div.style.overflow = "auto";
      if (binding.modifiers.y) {
        div.style.overflowY = "hidden";
      } else {
        div.style.overflowX = "hidden";
      }
    });
  }
});
Vue.directive("clickoutside", {
  // 点击盒子外部触发的事件
  bind(el, binding, vnode) {
    let documenHandler = function(e) {
      if (el.contains(e.target)) {
        return false;
      }
      if (binding.expression) {
        // console.dir(binding.expression);
        binding.value(e);
      }
    };
    el._vueClickOutside_ = documenHandler;
    document.addEventListener("click", documenHandler);
  },
  unbind(el, binding) {
    document.removeEventListener("click", el._vueClickOutside_);
    delete el._vueClickOutside_;
  }
});
Vue.directive("showTitle", {
  // 不换行省略号  移上去显示详情
  bind: function(el, binding) {
    Vue.nextTick().then(() => {
      el.title = el.innerText;
      el.style.whiteSpace = "nowrap";
      el.style.overflow = "hidden";
      el.style.textOverflow = "ellipsis";
    });
  },
  update: function(el, binding) {
    Vue.nextTick().then(() => {
      el.title = el.innerText;
      el.style.whiteSpace = "nowrap";
      el.style.overflow = "hidden";
      el.style.textOverflow = "ellipsis";
    });
  }
});
Vue.directive("placeholder", {
  //占位符
  bind: function(el, binding) {
    Vue.nextTick().then(() => {
      if (el.innerText === "") {
        el.innerText = "--";
      }
    });
  }
});
Vue.directive("auth", {
  // 控制增删改查功能
  bind: function(el, binding) {
    Vue.nextTick(() => {
      if (!store.getters.auth.includes(String(binding.value))) {
        el.parentNode.removeChild(el);
        // el.parentNode.innerHTML = `<div style="display: none">auth${btoa(binding.value)}<div>`;
        // el.parentNode.innerHTML = `<div>auth${binding.value}<div>`;
        // el.parentNode.style = "display: none";
      }
    });
  }
});
// 防止重复点击
Vue.directive("preventClick", {
  inserted: function(el, binding) {
    el.addEventListener("click", () => {
      if (!el.disabled) {
        el.disabled = true;
        setTimeout(() => {
          el.disabled = false;
        }, 1000);
      }
    });
  }
});
export default Vue;

标签:el,style,Vue,directive,省略号,移上去,binding,点击,div
From: https://www.cnblogs.com/guwufeiyang/p/18145151

相关文章

  • wangeditor5富文本中的图片点击放大
    放大图片组件img-preview.vue<template> <divclass="preview"@click="onClick"@keydown="onKeydown"> <divclass="preview-img"> <img:src="src"alt/> </div> </div>&l......
  • 点击菜单生成tabs(vue3.0)
    1.安装vuex npminstallvuex@next--save在main.js中引用vuex2.在main.js同级目录新建store/store.js文件 代码:import{createStore}from'vuex'exportdefaultcreateStore({ state:{ tabsList:[] }, mutations:{ addTab(state,tab){ //判断是否......
  • Android Studio修改代码后直接点击run没生效,需要Rebuild或者删除build文件夹后再run才
    AndroidStudio修改代码后直接点击run没生效,需要Rebuild或者删除build文件夹后再run才生效的解决方法第一步:app->editconfigurations进入app配置选中app,滑动到下面的beforelaunch,点击+号,添加一个Gradle-awareMake给Task输入一个名称,或者不填留空使用原理名称,然......
  • pyecharts实现点击省跳转省地图
    诶呀我去太感谢了终于找到实现点击地图省份实现跳转了。参考:利用pyecharts实现中国省与市之间的跳转_pyecharts点击地图跳转-CSDN博客 需要注意的问题:1.如果想在全国地图显示数据,data数据中要用如:北京市、广东省、香港特别行政区、内蒙古自治区,这种带有后缀的。(可能有些不需......
  • ABP后台管理页面AdminLTE框架,实现菜单项点击后,菜单展开当前菜单项高亮
    <style>.CurrentMenuColor{background-color:#007bff;color:#fff;}</style><script>//左侧菜单定位$(document).ready(function(){varpathname=window.location.pathname+window.location.search;......
  • 默认显示三张,第一张和第三张只显示一半,中间全部显示,点击可左右切换默认显示一二张
     项目地址:https://github.com/holiday0912/SwiperPreView   varswiper=newSwiper(".swiper-container",{autoplay:false,loop:true,initialSlide:2,spaceBetween:20,centeredSlides:true,slidesPerView:1.9,p......
  • 富文本内容在el-table中回显并且带省略号
    html部分<el-table><el-table-columnlabel="茶园介绍"width="100"><templateslot-scope="{row}"><divclass="show-ellipsis"v-html="row.profile"@click="viewCyPr......
  • 想请教一下,selenium可以做到点击这个继续嘛?
    大家好,我是Python进阶者。一、前言前几天在Python钻石交流群【盼头】问了一selenium的问题,问题如下:想请教一下,selenium可以做到点击这个继续嘛?二、实现过程这里【此类生物】给了一个解答:可以,switchtoalert。顺利地解决了粉丝的问题。如果你也有类似这种Python相关的小问......
  • html中image 区域点击的优点
    在HTML中,图像(image)区域可以被用作交互元素,通过点击操作可以实现多种功能和优点。以下是点击图像区域的一些优点:用户友好的交互:图像是一种直观的视觉元素,用户很容易理解和与之交互。点击图像可以触发预定义的动作或事件,如导航到另一个页面、放大图片、播放视频等,这提供了一......
  • Android 点击按钮跳转
    packagecom.example.helloworld;importandroidx.appcompat.app.AppCompatActivity;importandroid.content.Intent;importandroid.net.Uri;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;publicclassMainActivityextendsA......