Vue注册全局方法,全局组件,全局过滤器,全局自定义指令的方法

2023-11-07

1、添加全局方法
(1)使用Vue.prototype

// 在main.js中写
 Vue.prototype.getData = (params) => {
     ...
 }

(2)使用install + Vue.prototype

 // 在你的全局函数文件fun.js中写
    export default {
      install (Vue) {
        Vue.prototype.getData = () => {
          return { name: 'scout'}
        }
      }
    }
// main.js 引入
   import getData from './fun'
   Vue.use(getData) 

Vue.use 会自动阻止多次注册相同插件,届时即使多次调用也只会注册一次该插件。以上两种方式注册全局方法,实现的原理都是在 Vue.prototype 上添加了一个方法。在任何vue组件里都能使用。
Vue规定引入的插件必须是对象或者函数。
如果引入的插件是个对象:必须提供install方法,例如: element-ui组件库 , 需要使用Vue.use(),该方法默认会调用install方法;
如果引入的插件是个函数,不是按照vue规则设计(准确地说不是专门为VUE服务)里面没有install方法,例如:axios函数库。 那么就通过添加到vue原型链上的方式使用,它会被直接当作install函数执行。
2、注册全局组件

// 公共vue组件: components文件夹下面的Loading.vue文件:
import LoadingComponent from '@/components/Loading'

export default {
  install (Vue) {
    Vue.component('Loading', LoadingComponent)
  }
}

// 全局组件: public文件夹下面的Loading.js文件。在main.js中引入:
import Loading from "@/public/Loading"
Vue.use(Loading)

// 在vue任何组件上都可以直接使用:<Loading />

3、添加全局过滤器

// 在public文件夹下的filter.js文件中:
export const isEmpty = (value) => {
  return value || '-'
}
//在main.js中注册
import * as filters from './filters'

Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

// 在任何组件中都可以使用此过滤器:| 符号左侧的是传参
<template>
    <div>
        <span>{{message | isEmpty}}</span>
    </div>
</template>

4、添加全局自定义指令
自定义指令为我们提供了几个钩子函数(均为可选项):bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。inserted: 被绑定元素插入父节点时调用(仅保证父节点存在,但不一定被插入到DOM)。update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。unbind: 只调用一次, 指令与元素解绑时调用。我这里以inserted为例,添加一个全局的表格拖拽的自定义指令 v-tableDrag 。

// 这是directive文件夹下面的 tableDrag.js文件:

import Sortable from 'sortablejs'

export default {
  install (Vue) {
    Vue.directive('tableDrop', {
      inserted (el, binding, vnode) {
        let { value } = binding
        let column = el.querySelector('.ivu-table-header thead tr')
        Sortable.create(column, {
          animation: 200,
          filter: `.ivu-table-header thead tr th:nth-child(${column.childElementCount})`,
          onMove (e) {
            if (e.related.innerText === column.children[`${column.childElementCount - 1}`].innerText) {
              return false
            }
          },
          onEnd (e) {
            // 列表数据的改变
            let { item, oldIndex, newIndex } = e
            let oldItem = value[oldIndex]
            value.splice(oldIndex, 1)
            value.splice(newIndex, 0, oldItem)
            // 表头的改变
            let fatherNode = item.parentElement
            let flag = fatherNode.children[newIndex]
            fatherNode.removeChild(flag)
            fatherNode.insertBefore(flag, fatherNode.children[oldIndex])
          }
        })
      }
    })
  }
}

注册完后使用:

//在main.js中引入

import tableDrag from '@/directive/tableDrag'

Vue.use(tableDrag)
// 任何组件中都可以使用指令:v-tableDrag这个指令实现了表格的行,列,都可以进行拖拽

其实钩子函数中常用的参数就这三个(详细参数查看下图):el:所绑定的元素DOM节点;binding: 是一个对象,包含很多值,常用的就这么两个:name:指令名;value: 绑定的值,如:v-tableDrag=‘123’, value就是123。 vnode: Vue编译生成的虚拟DOM节点。
在这里插入图片描述
转载:https://juejin.im/post/5d5225ba6fb9a06aee362558

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue注册全局方法,全局组件,全局过滤器,全局自定义指令的方法 的相关文章

  • v-show和v-if有何异同?

    v show 用于根据条件展示元素 带有 v show 指令的元素始终会被渲染并保留在 DOM 中 v show 只是简单地切换元素的 CSS property display 注意 v show 不支持
  • SQL Server(三)-查询数据(3)

    多表连接查询和子查询 两表连接查询 多表连接查询 左外 右外 全外连接查询 组合查询 子查询 在SSMS的查询设计器中设计查询1 连接查询 1 使用无连接规则连接两表 不设置WHERE子句 所谓无连接规则连接 就是指连接两表的SELECT语
  • PPT怎么切换不同的母版

    首先选中要改变母版的PPT 右击鼠标出现菜单栏 选择版式 版式里面有所有的幻灯片母版可供选择
  • STM32------PWM

    文章目录 前言 一 PWM概述 二 库函数 1 GPIO引脚映射 2 定时器通道1配置 3 定时器通道1比较值 三 PWM1和PWM2模式 1 定义 2 示例 四 dc调光与pwm调光区别 五 呼吸灯源码下载 总结 前言 STM32 PWM
  • centos7防火墙配置详细

    一 条件防火墙是开启的 systemctl start firewalld 1 查看防火墙的配置 firewall cmd state firewall cmd list all 2 开放80端口 firewall cmd permanen
  • 数据挖掘学习(二)——数据探索与清洗

    笔者是一个痴迷于挖掘数据中的价值的学习人 希望在平日的工作学习中 挖掘数据的价值 找寻数据的秘密 笔者认为 数据的价值不仅仅只体现在企业中 个人也可以体会到数据的魅力 用技术力量探索行为密码 让大数据助跑每一个人 欢迎直筒们关注我的公众号
  • 我遇到的BUG:WSL2 忘记用户密码

    我之前忘记了WSL的密码 在网上看了很多瞎写的博文 没起到作用 后来偶然看到一篇文章 解决了这个问题 要在WSL中重置用户密码 需要 在windows命令行里将默认用户切换为root 在WSL里重置用户密码 在windows命令行里将默认用
  • sqlServer数据库索引

    08 索引 8 1 定义 对数据库表中一个或者多个列进行排序的结构 有助于更快的获取信息 是用来获取定位的 8 2 作用 加快数据检索 保证数据的一致性 实现表与表之前的参照完整性 副作用 创建索引会占用空间并耗费一定的时间 创建索引会减慢
  • 【可解释性机器学习】interpretable machine learning——Functional Decomposition

    Functional Decomposition 机器学习中的监督学习模型可被视为一个函数 该函数将高维特征向量作为输入 然后产生预测或分类概率作为输出 函数分解 functional decomposition 分解高维函数并将其表达为可
  • 常见前端安全问题概述

    随着互联网的高速发展 安全问题已成为企业最关注的焦点之一 而前端又是容易引发安全问题的 窗口 作为开发人员的我们 更需要充分了解如何预防和修复安全漏洞 本文将列举常见的前端安全问题 希望对你有所帮助 本文将从以下几种安全问题展开介绍 XSS
  • Jmeter中csvRead函数的使用

    当想要脚本随机传参数时 可以结合csvRead和Random函数使用 也相当于参数化的一种用法 想了解其他参数化方法的读者 可以参考上一篇文档 1 事先准备好存储数据的文档 注意 数据之间使用英文逗号隔开 否则后面随机抽取数据时没有抽取到
  • 【yarn】yarn Job 状态机正常执行流程

    1 概述 今天6月1日 节日值得发个文章 庆祝一下 上一篇文章 Yarn Yarn Service端如何处理客户端提交的任务 在上一篇文章中 我们知道服务器接收到客户端提交的任务之后 会启动多个状态机进行联合操作 最终来解决任务提交之后的全
  • JS内置对象Math的常用方法

    JS内置对象Math的常用方法 1 向上取整 Math ceil 2 向下取整 Math floor 3 四舍五入 Math round 4 绝对值 Math abs 最大值 Math max 最小值 Math min 7 随机数 Math
  • 5 种方法重复执行历史命令

    Linux 下 如果要执行一条或多条之前输过的指令 要怎么处理 很多人会想到使用上下箭头去翻查历史输入的命令 这当然是可以了 除了这种方法 本文再介绍另外 5 种方法来实现这样的效果 在正式开始之前 我们先随便执行几条命令 便于后面演示 为
  • Anaconda 更换镜像源、创建虚拟环境并安装 PyTorch

    文章目录 1 更换镜像源 2 选择合适的 CUDA Runtime 版本 2 1 CUDA Runtime 版本不能高于 CUDA Driver 版本 2 2 根据显卡的算力和架构确定 CUDA Runtime 版本 2 3 找到安装 Py
  • Ps2021软件安装Mac(含M1)、Windows版

    一 下载链接 Mac版本 1 M1芯片适用 百度网盘下载地址 提取码 rpyn 2 M1不适用 系统10 15及以上 下载地址 Windows版本 Ps2022 64位 此版本不支持LTSC版本系统 百度网盘下载地址 提取码 wb2d 二
  • MySQL: 运算符使用练习

    前言 练习运算符的使用 加强记忆 案例目的 在已建数据库中创建数据表 并对表中数据进行处理 练习运算符 包括数据运算符 逻辑运算符 位运算符 的使用 操作过程 创建名为 tb15 的数据表 包含 VARCHAR 100 类型的字段 note
  • 在vue中使用this.$refs报错undefined找不到子组件的方法

    最近遇见个问题 在父组件调用子组件的方法时报错undefined 这种情况一般都是父组件调用子组件方法的时候 dom还没更新成功 可以使用 this nextTick 这个方法作用是当数据被修改后使用这个方法会回调获取更新后的dom再渲染出
  • Spring MVC视图解析器

    Spring MVC视图解析器 AbstractCachingViewResolver XmlViewResolver ResourceBundleViewResolver UrlBasedViewResolver InternalReso
  • 报错Caused by java lang ClassNotFoundException Didn't find c

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 风趣幽默 还带黄段子 希望你也加入到我们人工智能的队伍中来 https blog csdn net jiangjunshow 报错信息 03 14 20 24 09 675 15801 1

随机推荐

  • 赛码-接金币-java

    题目描述 小赛非常喜欢玩游戏 最近喜欢上了一个接金币的游戏 在游戏中 使用帽子左右移动接金币 金币接的越多越好 但是金币掉到地上就不能再接了 为了方便问题的描述 我们把电脑屏幕分成11格 帽子每次能左右移动一格 现在给电脑屏幕如图标上坐标
  • 浅谈systemd

    浅谈systemd systemd的基本概念 Systemd的管理服务 Systemd的管理运行级别 systemd的基本概念 一 system的简要介绍 定义 系统启动和服务器守护进程管理器 负责在系统启动或运行时 激活系统资源 服务器进
  • 使用Docker安装Portainer

    打开powershell输入命令 docker run d p 9000 9000 restart always v var run docker sock var run docker sock name prtainer portain
  • 双轮平衡车实现自平衡功能

    1 功能说明 在双轮小车上安装一个六轴陀螺仪传感器 本文示例将实现双轮小车自主平衡功能 2 电子硬件 在这个示例中 我们采用了以下硬件 请大家参考 主控板 Basra主控板 兼容Arduino Uno 扩展板 Bigfish2 1扩展板 传
  • 【Java】Java中的“引用类型”和C中的“指针”区别

    文章目录 前言 1 Java中 基本数据类型 和 引用数据类型 变量在内存分配时的不同 2 C中 指针 的特点 3 Java中 引用 的特点 4 Java的参数传递 5 参考 前言 在学习Java中变量的数据类型时 发现其分为2大类 基本数
  • spring加载流程之ConfigurationClassPostProcessor

    spring加载流程之ConfigurationClassPostProcessor ConfigurationClassPostProcessor postProcessBeanDefinitionRegistry processConf
  • FPGA面试真题解析

    FPGA面试真题解析 1 1 十进制46 25对应的二进制表达式为 硬件逻辑实习岗 A 101110 11 B 101101 01 C 101110 1 D 101110 01 解析 这个问题看上去很简单 那是因为我们平时可以打开电脑上的计
  • 若依-了解头像(文件)上传流程

    周知 本文主要记录本人关于自主学习若依框架的部分心得经验 必定有许多不足甚至理解有误的部分 如果对你有帮助我也不胜欢喜 如果发现有错误的地方也希望能够分享指出 一起加油 需求原因 客户内部系统 一般不对外开放 因此不适合将文件 如图片 存放
  • 常用的函数接口

    常用的函数接口 FunctionalInterface public interface Function
  • R语言 if else 语句

    R语言中if else语句的编写格式 因为R是解释语言 如果else单独起一行 无法解释执行 所以else不能单独一行 最好这样写 if a print hello else print Hi 转载于 https www cnblogs c
  • 基于vue+element-ui实现Cascader级联选择器+Table树形数据

    开发进度提前50 啊 真香 下面 看图说话 Table树形数据 Cascader级联选择器 功能实现 详细代码 Cascader级联选择器 options属性指定选项数组即可渲染出一个级联选择器 所以后端接口返回的数据结构要保持一一致性 这
  • 记一次Redis批量删除Key问题

    记一次Redis批量删除Key问题 前言 最近在项目中使用redis时发现一个问题 批量删除的时候删除不了 代码如下 redis配置 Bean public RedisTemplate redisTemplate RedisConnecti
  • C/C++中关于位域的一些总结

    转载自 http blog csdn net xkjcf article details 7688528 由于信息存储时 可能只占一位或者几位二进制位 比如开关量 只需要占据一位即可 为了节省存储空间 并且处理简单 C语言提供了一种数据结构
  • 点云地图三维表面重建

    通过对点云进行表面三角化mesh重建 可以使得点云地图更加轻量化 同时针对地面 红色 和非地面 蓝色 使用不同采样率的三角面片顶点 可以进一步减少地图数据量
  • 面试准备:Java常见面试题汇总(二)

    面试准备 Java常见面试题汇总 一 面试准备 Java常见面试题汇总 二 面试准备 Java常见面试题汇总 三 文章目录 43 java 中的 Math round 1 5 等于多少 44 String str abc 与 String
  • CAP简述-一致性、可用性、分区容忍性

    一致性 Consistency 是指在同一时刻 分布式系统中的所有数据备份为相同值 可用性 Availability 指集群中的某一个节点故障宕机后 集群还能响应客户端请求 即假设一个节点挂 另一个备份节点要顶上 分区容忍性 Partiti
  • 保姆级教程!将 Vim 打造一个 IDE (Python 篇)

    从上周开始我就开始折腾 搞了一下 Vim IDE for Python Go 我将整个搭建的过程整理成本篇文章分享出来 本篇是 Python 版本的保姆级教程 实际上我还写了 Go 版本的 有想看的可以本篇文章点个赞 我下篇就发 一说到 I
  • Linux环境安装Jenkins(详细,亲测可行)

    1 基础环境 Linux java环境 linux安装java1 8 拒绝 emo的博客 CSDN博客 rpm下载 Index of jenkins redhat stable 清华大学开源软件镜像站 Tsinghua Open Sourc
  • 总结一些小细节 ---- Android

    1 Null pointer dereference of parent getItemAtPosition where null comes from constant This error always happened in the
  • Vue注册全局方法,全局组件,全局过滤器,全局自定义指令的方法

    1 添加全局方法 1 使用Vue prototype 在main js中写 Vue prototype getData params gt 2 使用install Vue prototype 在你的全局函数文件fun js中写 export