Vue.directive()的用法和实例详解


Posted in Javascript onMarch 04, 2018

官网实例:

https://cn.vuejs.org/v2/api/#Vue-directive

https://cn.vuejs.org/v2/guide/custom-directive.html

指令定义函数提供了几个钩子函数(可选):

bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。

update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新(详细的钩子函数参数见下)。

componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。

unbind: 只调用一次, 指令与元素解绑时调用。

本人菜鸟型,看官网蒙圈,然后百度Vue.directive()的实例和用法,有的很高深,有的不健全,我贴上两个简单的demo,希望对看到的朋友有帮助:

1、官网给出的demo,刷新页面input自动获取焦点:

<div id="app"> 
<SPAN style="WHITE-SPACE: pre"> </SPAN><input type="text" v-focus/> 
</div> 

<div id="app">
 <input type="text" v-focus/>
</div>

// 注册一个全局自定义指令 v-focus  
Vue.directive('focus', { 
  // 当绑定元素插入到 DOM 中。  
  inserted: function (el,binding) { 
    <SPAN style="WHITE-SPACE: pre"> </SPAN>// 聚焦元素  
    <SPAN style="WHITE-SPACE: pre"> </SPAN>el.focus(); 
  } 
}); 
new Vue({ 
el:'#app' 
}); 
// 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
  // 当绑定元素插入到 DOM 中。
  inserted: function (el,binding) {
   // 聚焦元素
   el.focus();
 }
});
new Vue({

el:'#app'
});

2、一个拖拽的demo: 1)被拖拽的元素必须用position定位,才能被拖动;

2)自定义指令完成后需要实例化Vue,挂载元素;

3)inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。

<style type="text/css"> 
  .one,.two{ 
    height:100px; 
    width:100px; 
    border:1px solid #000; 
    position: absolute; 
    -webkit-user-select: none; 
    -ms-user-select: none; 
    -moz-user-select: -moz-none; 
    cursor: pointer; 
  } 
  .two{ 
    left:200px; 
  } 
</style> 
<div id="app"> 
  <div class="one" v-drag>拖拽one</div> 
  <div class="two" v-drag>拖拽two</div> 
</div> 
<style type="text/css">
 .one,.two{
 height:100px;
 width:100px;
 border:1px solid #000;
 position: absolute;
 -webkit-user-select: none;
 -ms-user-select: none;
 -moz-user-select: -moz-none;
 cursor: pointer;
 }
 .two{
 left:200px;
 }
</style>
<div id="app">
 <div class="one" v-drag>拖拽one</div>
 <div class="two" v-drag>拖拽two</div>
</div>
[javascript] view plain copy print?Vue.directive('drag', { 
  inserted:function(el){ 
    el.onmousedown=function(e){ 
      let l=e.clientX-el.offsetLeft; 
      let t=e.clientY-el.offsetTop; 
      document.onmousemove=function(e){ 
        el.style.left=e.clientX-l+'px'; 
        el.style.top=e.clientY-t+'px'; 
      }; 
      el.onmouseup=function(){ 
        document.onmousemove=null; 
        el.onmouseup=null; 
      } 
    } 
  } 
}) 
new Vue({ 
el:'#app' 
});

总结

以上所述是小编给大家介绍的Vue.directive()的用法和实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
清华大学出版的事半功倍系列 javascript全部源代码
May 04 Javascript
基于jQuery的表格操作插件
Apr 22 Javascript
jQuery中setTimeout的几种使用方法小结
Apr 07 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
Dec 20 Javascript
JQuery datepicker 用法详解
Dec 25 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
Feb 28 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
Dec 27 Javascript
vue 使用Jade模板写html,stylus写css的方法
Feb 23 Javascript
Angular中sweetalert弹框的基本使用教程
Jul 22 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
原生js滑动轮播封装
Jul 31 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 #Javascript
JavaScript图片处理与合成总结
Mar 04 #Javascript
微信web端后退强制刷新功能的实现代码
Mar 04 #Javascript
编写React组件项目实践分析
Mar 04 #Javascript
Vue组件开发技巧总结
Mar 04 #Javascript
代码详解javascript模块加载器
Mar 04 #Javascript
Vue用v-for给src属性赋值的方法
Mar 03 #Javascript
You might like
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
Vue3为什么这么快
2020/09/23 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
基于python绘制科赫雪花
2018/06/22 Python
python实现横向拼接图片
2020/03/23 Python
Python安装Bs4的多种方法
2020/11/28 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
新年抽奖获奖感言
2014/03/02 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
优秀员工评优方案
2014/06/13 职场文书
个人安全生产责任书
2014/07/28 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
golang的文件创建及读写操作
2022/04/14 Golang