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 相关文章推荐
JavaScript使用二分查找算法在数组中查找数据的方法
Apr 07 Javascript
跟我学习javascript的异步脚本加载
Nov 20 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
Feb 26 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
JS填写银行卡号每隔4位数字加一个空格
Dec 19 Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 Javascript
前端页面文件拖拽上传模块js代码示例
May 19 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
vue使用Google地图的实现示例代码
Dec 19 Javascript
Vue实现base64编码图片间的切换功能
Dec 04 Javascript
vue3弹出层V3Popup实例详解
Jan 04 Vue.js
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中引用符号(&amp;)的使用详解
2013/11/13 PHP
php魔术变量用法实例详解
2014/11/13 PHP
JS 树形递归实例代码
2010/05/18 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
js 作用域和变量详解
2017/02/16 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
koa-router源码学习小结
2018/09/07 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
python实现linux下使用xcopy的方法
2015/06/28 Python
如何给Python代码进行加密
2020/01/10 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
HTML5网页录音和上传到服务器支持PC、Android,支持IOS微信功能
2019/04/26 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
专业销售业务员求职信
2013/11/18 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
花木兰观后感
2015/06/10 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
R9700摩机记
2022/04/05 无线电