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 相关文章推荐
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
Feb 03 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
js事件监听机制(事件捕获)总结
Aug 08 Javascript
9款2014最热门jQuery实用特效推荐
Dec 07 Javascript
jquery实现对联广告的方法
Feb 05 Javascript
jQuery检测某个元素是否存在代码分享
Jul 09 Javascript
JavaScript的模块化开发框架Sea.js上手指南
May 12 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
Jan 23 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
ES6模块化的import和export用法方法总结
Aug 08 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
May 16 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
php下实现农历日历的代码
2007/03/07 PHP
需要发散思维学习PHP
2009/06/29 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
php实现cookie加密的方法
2015/03/10 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
python实现2048小游戏
2015/03/30 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
用Django写天气预报查询网站
2018/10/21 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
初中生三年学习生活的自我评价
2013/11/03 职场文书
英语感恩演讲稿
2014/01/14 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
初中成绩单评语
2014/12/29 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers