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数组去重3种方法的性能测试与比较
Mar 26 Javascript
JavaScript创建对象的写法
Aug 29 Javascript
js禁止页面使用右键(简单示例代码)
Nov 13 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
Javascript异步编程模型Promise模式详细介绍
May 08 Javascript
JavaScript函数模式详解
Nov 07 Javascript
js获取浏览器基本信息大全
Nov 27 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
Aug 27 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
Sep 21 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
Sep 27 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
May 08 Javascript
微信小程序实现转盘抽奖
Sep 21 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
js每次Title显示不同的名言
2008/09/25 Javascript
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
php 修改密码实现代码
2017/05/24 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
使用Python开发windows GUI程序入门实例
2014/10/23 Python
Python返回真假值(True or False)小技巧
2015/04/10 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python 美化输出信息的实例
2018/10/15 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
会计专业自荐书
2014/07/08 职场文书
保护校园环境倡议书
2015/04/28 职场文书
学校体育节班级口号
2015/12/25 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
Golang数据类型和相互转换
2022/04/12 Golang