广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue全局自定义指令和局部自定义指令的使用
  • 216
分享到

vue全局自定义指令和局部自定义指令的使用

2024-04-02 19:04:59 216人浏览 薄情痞子
摘要

目录局部自定义指令(只针对组件内的元素)定义全局自定义指令自定义指令的钩子函数自定义指令钩子函数的参数例子除了默认设置的核心指令 (v-model 和 v-show),Vue 也允许

除了默认设置的核心指令 (v-model 和 v-show),Vue 也允许注册自定义指令。

局部自定义指令(只针对组件内的元素)

父组件app.vue

<template>
  <div id="app">
    <test-api></test-api>
  </div>
</template>
<script>
import testApi from './components/testApi.vue'
export default {
  data (){
    return {
      
    }
  },
  watch:{
    
  },
  methods:{
    
  },
  components:{
    testApi
  }
}
</script>
<style >
</style>

子组件testApi.vue

<template>
  <div>
    <!-- 让input元素在打开页面的时候就获得焦点 -->
    <input type="text" v-autoFocus >
  </div>
</template>
<script>
export default {
  directives:{
    // 自定义指令的名字
    autoFocus:{
      // 钩子函数,被绑定元素插入父节点时调用 (父节点存在即可调用,不必存在于 document 中)。
      inserted(el){
        el.focus()
        console.log( 'inserted' );
      },
      // 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
      bind(){
        console.log( 'bind' );
      },
      // 所在组件的 Vnode 更新时调用,但是可能发生在其孩子的 VNode 更新之前。
      // 指令的值可能发生了改变也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 
      update(){
        console.log( 'update' );
      },
      // 所在组件的 VNode 及其孩子的 VNode 全部更新时调用。
      componentUpdated(){
        console.log( 'componentUpdated' );
      },
      // 只调用一次,指令与元素解绑时调用。
      unbind(){
        console.log( 'unbind' );
      }
      
    }
  },
  data () {
    return {
      
    }  
  },
  props:[],
  methods:{
    
  },
  created(){
    
  },
  mounted(){
    
  },
  components:{
  }
}
</script>
<style scoped>
</style>

效果图:

定义全局自定义指令

在任意页面的任意input里加上v-autoFcs

Vue.directive('autoFcs',{
  // 钩子函数,被绑定元素插入父节点时调用 (父节点存在即可调用,不必存在于 document 中)。
  inserted(el){
    el.focus()
    console.log( 'inserted' );
  },
  // 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
  bind(){
    console.log( 'bind' );
  },
  // 所在组件的 VNode 更新时调用,但是可能发生在其孩子的 VNode 更新之前。
  // 指令的值可能发生了改变也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 
  update(){
    console.log( 'update' );
  },
  // 所在组件的 VNode 及其孩子的 VNode 全部更新时调用。
  componentUpdated(){
    console.log( 'componentUpdated' );
  },
  // 只调用一次,指令与元素解绑时调用。
  unbind(){
    console.log( 'unbind' );
  }
})

效果图:

自定义指令的钩子函数

钩子函数

指令定义函数提供了几个钩子函数 (可选):

  • bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
  • inserted:被绑定元素插入父节点时调用 (父节点存在即可调用,不必存在于 document 中)。
  • update:所在组件的 VNode 更新时调用,但是可能发生在其孩子的 VNode 更新之前。指令的值可能发生了改变也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。
  • componentUpdated:所在组件的 VNode 及其孩子的 VNode 全部更新时调用。
  • unbind:只调用一次,指令与元素解绑时调用。

接下来我们来看一下钩子函数的参数 (包括el,binding,vnode,oldVnode)。

自定义指令钩子函数的参数

钩子函数参数

钩子函数被赋予了以下参数:

  • el:指令所绑定的元素,可以用来直接操作 DOM 。
  • binding:一个对象,包含以下属性:
  • name:指令名,不包括v-前缀。
  • value:指令的绑定值,例如:v-my-directive=“1 + 1”, value 的值是2。
  • oldValue:指令绑定的前一个值,仅在update和componentUpdated钩子中可用。无论值是否改变都可用。
  • expression:绑定值的字符串形式。例如v-my-directive=“1 + 1”,expression 的值是"1 + 1"。
  • arg:传给指令的参数。例如v-my-directive:foo,arg 的值是"foo"。
  • modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar, 修饰符对象 modifiers 的值是{ foo: true, bar: true }。
  • vnode:Vue 编译生成的虚拟节点,查阅 VNode API 了解更多详情。
  • oldVnode:上一个虚拟节点,仅在update和componentUpdated钩子中可用。

例子

<div id="hook-arguments-example" v-demo:foo.a.b="message"></div>
Vue.directive('demo', {
  bind: function (el, binding, vnode) {
    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(', ')
  }
})
new Vue({
  el: '#hook-arguments-example',
  data: {
    message: 'hello!'
  }
})

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vue全局自定义指令和局部自定义指令的使用

本文链接: https://www.lsjlt.com/news/163497.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue全局自定义指令和局部自定义指令的使用
    目录局部自定义指令(只针对组件内的元素)定义全局自定义指令自定义指令的钩子函数自定义指令钩子函数的参数例子除了默认设置的核心指令 (v-model 和 v-show),Vue 也允许...
    99+
    2022-11-13
  • vue.js内部自定义指令与全局自定义指令的示例分析
    这篇文章将为大家详细讲解有关vue.js内部自定义指令与全局自定义指令的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。directive这个单词是我们写自定义指令...
    99+
    2022-10-19
  • Vue全局自定义指令Modal拖拽的实践
    目录背景 实现思路 实现效果 背景 最近一直在做的项目是Vue2搭建的项目,UI框架用的antdV,项目中用到了很多Modal对话框,然后突然有一天产品说:“这个对话框为什么不能移...
    99+
    2022-11-12
  • vue全局注册自定义指令防抖解析
    目录全局注册自定义指令防抖1、先建一个js文件2、在mian.js里面注册3、使用vue防抖的使用防抖函数在vue中直接使用vue中使用高阶组件vue中自定义指令使用全局注册自定义指...
    99+
    2022-11-13
  • vue全局注册自定义指令防抖怎么实现
    本文小编为大家详细介绍“vue全局注册自定义指令防抖怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue全局注册自定义指令防抖怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。全局注册自定义指令防抖...
    99+
    2023-06-30
  • Vue自定义指令详解
    目录Vue自定义指令自定义指令钩子函数输出相关属性运用例子总结Vue自定义指令 自定义指令 注册一个全局指令v-focus,该指令的功能是在页面加载时元素获得焦点 <!DO...
    99+
    2022-11-12
  • Vue自定义指令详细
    目录1、背景2、局部自定义指令3、全局自定义指令4.1 自定义指令钩子函数4.2 钩子函数参数4.3 动态指令传参 5、拓展1、背景 最近在面试找工作,然后面试官就问了有关自定义指令...
    99+
    2022-11-12
  • vue如何使用自定义指令
    这篇文章将为大家详细讲解有关vue如何使用自定义指令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 使用自定义指令的逻辑与使用事件修饰符的逻辑...
    99+
    2022-10-19
  • vue中的自定义指令clickOutside
    目录自定义指令clickOutside首先我们先看看vue官方的文档clickoutside 这个指令用在哪里呢?写法自定义指令clickoutside使用及扩展用法自定义指令cli...
    99+
    2022-11-13
  • Vue自定义指令怎么写
    小编给大家分享一下Vue自定义指令怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是Vue指令指令是一种可以附加到DOM...
    99+
    2022-10-19
  • Vue中如何自定义指令
    这篇文章主要介绍Vue中如何自定义指令,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue中除了内置指令,也允许注册自定义的指令。自定义指令提供一种将数据的变化映射为DOM的行为例如:当我们想用一个函数表示焦点Vue...
    99+
    2023-06-04
  • Vue怎么自定义指令directive使用
    本篇内容主要讲解“Vue怎么自定义指令directive使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue怎么自定义指令directive使用”吧!1. 一个指令定义对象可以提供如下几个钩...
    99+
    2023-07-06
  • Vue中如何使用自定义指令
    今天就跟大家聊聊有关Vue中如何使用自定义指令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.自定义指令的语法Vue自定义指令语法如下:Vue.d...
    99+
    2022-10-19
  • 详解Vue自定义指令及使用
    目录一、什么是指令vue 中常用的一些内置 v- 指令v-if 和 v-show 的对比二、自定义指令的钩子函数三、全局指令四、局部指令五、带参数的自定义指令六、函数简写七、应用实例...
    99+
    2022-11-12
  • Vue自定义指令及使用实例
    这篇文章主要介绍了Vue自定义指令及使用实例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、什么是指令学习 vue 的时候肯定会接触指令,那么什么是指令呢?在 vue 中提...
    99+
    2023-06-15
  • vue 过滤器和自定义指令的使用
    目录过滤器 01. 是什么 02. 怎么做 (1)定义过滤器 (2)使用方式 (3)过滤器的参数03. 封装过滤器函数 自定义指令 01. 是什么 02. 基本概念 (1)钩子函数 ...
    99+
    2022-11-12
  • vue中自定义指令怎么用
    小编给大家分享一下vue中自定义指令怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、v-drag需求:鼠标拖动元素思路:元素偏移量 = 鼠标滑动后的坐标 - 鼠标初始点击元素时的坐标 + 初始点击时元素距离可视区域...
    99+
    2023-06-22
  • vue中的自定义指令如何使用
    这篇文章主要介绍“vue中的自定义指令如何使用”,在日常操作中,相信很多人在vue中的自定义指令如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中的自定义指令如何使用”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • Vue 3.0自定义指令的使用入门
    目录一、自定义指令1、注册全局自定义指令2、使用全局自定义指令3、完整的使用示例二、注册全局自定义指令的过程三、应用挂载的过程四、阿宝哥有话说4.1 Vue 3 有哪些内置指令?4....
    99+
    2022-11-12
  • vue自定义指令directive的使用场景
    目录1. 一个指令定义对象可以提供如下几个钩子函数(均为可选)2.指令钩子函数会被传入以下参数3.使用自定义指令场景的示例1. 一个指令定义对象可以提供如下几个钩子函数(均为可选) ...
    99+
    2023-05-16
    vue 自定义指令directive 自定义指令directive directive使用场景
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作