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 相关文章推荐
JS中style属性
Oct 11 Javascript
Javascript学习笔记4 Eval函数
Jan 11 Javascript
JS弹出对话框返回值代码(asp.net后台)
Dec 28 Javascript
25个优雅的jQuery Tooltip插件推荐
May 25 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
Nov 12 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 Javascript
CSS3,HTML5和jQuery搜索框集锦
Dec 02 Javascript
JS实现三个层重叠点击互相切换的方法
Oct 06 Javascript
原生JS实现网络彩票投注效果
Sep 25 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
Dec 05 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
js实现数字跳动到指定数字
Aug 25 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 简单日历实现代码
2009/10/28 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
[02:09]抵达西雅图!中国军团加油!
2014/07/07 DOTA
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
python中的字典详细介绍
2014/09/18 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
python实现定时发送qq消息
2019/01/18 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
python实例化对象的具体方法
2020/06/17 Python
python 实现图片批量压缩的示例
2020/12/18 Python
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
学生档案自我鉴定
2013/10/07 职场文书
保险专业大专生求职信
2013/10/26 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
超市国庆节促销方案
2014/02/20 职场文书
搞笑的获奖感言
2014/08/16 职场文书
四查四看整改措施
2014/09/19 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL