全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Vue2.x-directive的学习笔记

除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令。注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件——然而,有的情况下,你仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令。

官方建议directive是对纯 DOM 元素进行底层操作使用,一般情况下还是建议使用组件的复用。

directive的意义

自定义指令是用来操作DOM的。

尽管数据驱动是Vue的核心之一,但是在实际情况下,并不是所有的情况都可以用数据来驱动视图,我们不可避免的会在有些情况下有操作DOM的需求,所以directive也就出现了。自定义指令就是一种有效的补充和扩展,不仅可用于定义任何的DOM操作,并且是可复用的。

官方栗子

code

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

//局部指令
directive: {
 focus(el){
  el.focus()
 }
}

use

<input v-focus>
//input标签自动获得标签

是不是感觉很简单?相信自己,其实vue大法真心不难,难得是如何应用。下面先来简单看看的钩子函数。

钩子函数

  1. bind:在该元素绑定指令时调用且仅调用一次,用于初始化
  2. inserted:元素插入父节点时调用(可能仍在虚拟Dom中)
  3. update:模板更新时调用
  4. componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。
  5. unbind: 只调用一次, 指令与元素解绑时调用。

钩子参数

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

实际应用

directive的语法就这么简单,在合适的钩子中做应该做的事就可以了。下面会列出两个使用指令的栗子

集成第三方插件

用了一段时间的vue,其实我都没有留意directive具体使用,一般来言真的很少使用到。直到有一次需要集成第三方插件到Vue时才发现,原来directive是集成第三方插件最合适也是最简单的方式。凡是关于第三方的集成,都可以尝试使用directive

import Vue from 'vue'
import hljs from 'highlight.js'
import 'highlight.js/styles/monokai-sublime.css'

Vue.directive('highlight', {
 bind(el){
  hljs.highlightBlock(el);
 },
})

use

<pre>
 <code v-highlight>
   //code here
 </code>
</pre>

如上,我注册了一个全局的指令 highlight。 指令的作用就是高亮代码,当元素带上'v-highlight'时,hljs就会去初始化该Dom。

当然我这是可以使用组件来实现这个功能,但绝对没有指令那么方便快捷,下面是一个简略的组件,可以看出,不仅定义和使用都比指令来的复杂。

<template>
  <pre>
    <code ref="code">
     <slot name="code"></slot>
    </code>
  </pre>
</template>
<script>
  import hljs from 'highlight.js'
  import 'highlight.js/styles/monokai-sublime.css'
  export default {
    mounted(){
     hljs.highlightBlock(this.$refs.code);
    }
  }
</script>

指令验证

如果需要一个可以复用的验证,我们也可以使指令来完成,下面来看一个简单的栗子:

Vue.directive('checkName', {
 //监控数据变化 
 update(el, binding){
   let regex = /^[a-zA-z]{6,10}$/g;
   //=value === oldValue, 避免重复更新
   if(binding.value !== binding.oldValue){
     el.style.border = regex.test(binding.value) ? '' : '1px solid red';
   }
 }
})

user

<input v-model='value1' v-checkName='value1'></input>
<input v-model='value2' v-checkName='value2'></input>
<input v-model='value3' v-checkName='value3'></input>
<input v-model='value4' v-checkName='value4'></input>

//当value的值不是6-10的字母的时,input的boder变为红色;

result

结果很明显,不符合规则的数据,input的边框变红了。

End

这里只是抄写下官方的文档,举两个栗子,就是那么简单,任性 ( ̄~ ̄) !其实主要想说明白的一件事就是明确dirctive的意义:指令是用来操作DOM的,希望能起到抛砖引玉的作用吧。

参考

VUE-自定义指令

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Vue2  # directive  # Vue  # 对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍  # 在Vue2中注册全局组件的两种方法详解  # vue2实现directive自定义指令的封装与全局注册流程  # 自定义  # 绑定  # 第三方  # 复用  # 情况下  # 是一个  # 这是  # 定值  # 就会  # 也就  # 我都  # 修饰符  # 是用来  # 可以用  # 会在  # 真的很  # 抛砖引玉  # 用了  # 希望能  # 很简单 


相关文章: PHP正则匹配日期和时间(时间戳转换)的实例代码  高性价比服务器租赁——企业级配置与24小时运维服务  如何在Windows环境下新建FTP站点并设置权限?  如何在服务器上三步完成建站并提升流量?  ui设计制作网站有哪些,手机UI设计网址吗?  ,网页ppt怎么弄成自己的ppt?  如何基于云服务器快速搭建个人网站?  如何快速搭建自助建站会员专属系统?  Swift中循环语句中的转移语句 break 和 continue  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  海南网站制作公司有哪些,海口网是哪家的?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  Swift中switch语句区间和元组模式匹配  如何在IIS管理器中快速创建并配置网站?  建站之星价格显示格式升级,你的预算足够吗?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  Swift中swift中的switch 语句  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何快速搭建个人网站并优化SEO?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  如何通过主机屋免费建站教程十分钟搭建网站?  深圳网站制作案例,网页的相关名词有哪些?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  建站之星代理费用多少?最新价格详情介绍  股票网站制作软件,网上股票怎么开户?  如何用wdcp快速搭建高效网站?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  代购小票制作网站有哪些,购物小票的简要说明?  建站之星如何一键生成手机站?  如何快速生成可下载的建站源码工具?  如何通过万网虚拟主机快速搭建网站?  淘宝制作网站有哪些,淘宝网官网主页?  如何用虚拟主机快速搭建网站?详细步骤解析  免费网站制作appp,免费制作app哪个平台好?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  建站之星2.7模板:企业网站建设与h5定制设计专题  ,南京靠谱的征婚网站?  ,交易猫的商品怎么发布到网站上去?  建站VPS推荐:2025年高性能服务器配置指南  电商网站制作公司有哪些,1688网是什么意思?  大同网页,大同瑞慈医院官网?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  小型网站建站如何选择虚拟主机?  潮流网站制作头像软件下载,适合母子的网名有哪些?  在线教育网站制作平台,山西立德教育官网?  教学网站制作软件,学习*后期制作的网站有哪些?  如何解决VPS建站LNMP环境配置常见问题?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  攀枝花网站建设,攀枝花营业执照网上怎么年审? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。