vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)


Posted in Javascript onJuly 11, 2017

前言

大家都知道在Vue中,我们平时数据驱动视图时候,内部自带的指令有时候解决不了一些需求,这时候,Vue给我们一个很好用的东东来实现自定义指令,这就是directive。下面话不多说了,来一起看看详细的介绍:

directive

这个单词是我们写自定义指令的关键字哦

自定义指令为我们提供了几个钩子函数,这时候你一定好奇什么是钩子函数,说简单点,就是集中表现状态

  • bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
  • inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。
  • update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新(详细的钩子函数参数见下)。
  • componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。
  • unbind: 只调用一次, 指令与元素解绑时调用。

下面我们开始上代码,让我们更好的理解自定义指令怎么做

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
 <div id="app">
 
 <div class="ab" v-css="{'color':'red','font-size':'30px'}">
 hello
 </div>
 <input type="text" v-focus>
 </div>
 
</body>
</html>

在html中,我们看到了两个指令v-cssv-focus

我们自定义指令时候,一定前面要带上v-

Vue.directive("css",{
 //钩子函数 ,el就是当前元素
 inserted(el,binding){
 //el绑定的元素本身
 //binding就是css指令里面的的对象元素
 let styleobj=binding.value,arr=[];
 for(let key in styleobj){
  arr.push(key+":"+styleobj[key])
  }
 arr=arr.join(";");
 el.style.cssText=arr;
 },
 bind(el,binding) {
 //指令绑定在元素上时候执行,只执行一次
 }
});
 new Vue({
 el:'#app',
 data:{
  show:true
 },
 directives:{
 focus:{
  inserted(el,binding){
  //el绑定的元素本身
  //binding就是css指令里面的的对象元素
  el.focus();
  }
  }
 }
 });

在js里面我们可以看到

Vue.directive("css",{})

我们在 new Vue外部定义了这样一段代码,这就是我们全局自定义指令的模板方式

  • css是自定义指令的名字
  • {}里面我们写上钩子函数就可以

我们所有的钩子函数里面,基本都会有2个参数el,binding

  • el: 指令所绑定的元素,可以用来直接操作 DOM 。
  • binding 绑定元素本身的一个对象
  • vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)

从上面我们可以看到,binding里面保留绑定指令的name和value,这些很重要

局部自定义指令

directives:{
 name:{

 }
 }

区别在于,我们写在new Vue里面,里面api操作和上面的全局自定义指令一样

下面我们开始看代码运行结果

vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)

我们可以看到样式引用上去了

文本框也获取了焦点

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
append和appendTo的区别以及appendChild用法
Dec 24 Javascript
jquery中get和post的简单实例
Feb 04 Javascript
js简单的点击返回顶部效果实现方法
Apr 10 Javascript
拥Bootstrap入怀——导航栏篇
May 30 Javascript
jquery输入数字随机抽奖特效的简单实现代码
Jun 10 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
vue 挂载路由到头部导航的方法
Nov 13 Javascript
一文了解Vue中的nextTick
May 06 Javascript
js实现简易计算器功能
Oct 18 Javascript
vue实现简单跑马灯效果
May 25 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
微信小游戏中three.js离屏画布的示例代码
Oct 12 Javascript
javascript 玩转Date对象(实例讲解)
Jul 11 #Javascript
使用jQuery实现动态添加小广告
Jul 11 #jQuery
Vue中父组件向子组件通信的方法
Jul 11 #Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
Jul 11 #Javascript
网页中的图片查看器viewjs使用方法
Jul 11 #Javascript
自定义事件解决重复请求BUG的问题
Jul 11 #Javascript
关于js中的鼠标事件总结
Jul 11 #Javascript
You might like
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
PHP输出日历表代码实例
2015/03/27 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
php格式化时间戳
2016/12/17 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
Html中 IFrame的用法及注意点
2016/12/22 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
python2.7到3.x迁移指南
2018/02/01 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
秘书英文求职信范文
2014/01/31 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs