官网实例:

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自动获取焦点:

  1. <div id="app">
  2. <span style="white-space:pre;"> </span><input type="text" v-focus/>
  3. </div>
  1. // 注册一个全局自定义指令 v-focus
  2. Vue.directive('focus', {
  3. // 当绑定元素插入到 DOM 中。
  4. inserted: function (el,binding) {
  5. <span style="white-space:pre;"> </span>// 聚焦元素
  6. <span style="white-space:pre;"> </span>el.focus();
  7. }
  8. });
  9. new Vue({
  10.   el:'#app'
  11. });

2、一个拖拽的demo:

1)被拖拽的元素必须用position定位,才能被拖动;

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

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

  1. <style type="text/css">
  2. .one,.two{
  3. height:100px;
  4. width:100px;
  5. border:1px solid #000;
  6. position: absolute;
  7. -webkit-user-select: none;
  8. -ms-user-select: none;
  9. -moz-user-select: -moz-none;
  10. cursor: pointer;
  11. }
  12. .two{
  13. left:200px;
  14. }
  15. </style>
  16. <div id="app">
  17. <div class="one" v-drag>拖拽one</div>
  18. <div class="two" v-drag>拖拽two</div>
  19. </div>
    1. Vue.directive('drag', {
    2. inserted:function(el){
    3. el.onmousedown=function(e){
    4. let l=e.clientX-el.offsetLeft;
    5. let t=e.clientY-el.offsetTop;
    6. document.onmousemove=function(e){
    7. el.style.left=e.clientX-l+'px';
    8. el.style.top=e.clientY-t+'px';
    9. };
    10. el.onmouseup=function(){
    11. document.onmousemove=null;
    12. el.onmouseup=null;
    13. }
    14. }
    15. }
    16. })
    17. new Vue({
    18.   el:'#app'
    19. });

最新文章

  1. Arraylist Vector Linkedlist区别和用法 (转)
  2. 数据库的Instance/Crash Recovery
  3. Spark Streaming之旅
  4. Shell基础整理
  5. 洛谷P1983 车站分级
  6. 关于OpenGL+GLSL深度贴图采样
  7. 最全的JAVA源码整合下载
  8. 把mysql 中的字符gb2312 改为gbk的方法
  9. Pawn Brotherhood
  10. NPC
  11. Eureka的工作原理以及它与ZooKeeper的区别
  12. Day08 - Ruby比一比:String的+=与concat串接
  13. JDK设计模式之——策略模式(Comparable和Comparator接口)
  14. iOS 不能加载电子签名
  15. Ulua对象管理方式
  16. Tomcat容器做到自我保护,设置最大连接数(服务限流:tomcat请求数限制)
  17. 【nosql】之ehcache.xml文件属性描述
  18. 微信小程序之页面传值(路由、页面栈、globalData、缓存)
  19. rdf-3x简要使用
  20. 组件之间的通讯:vuex状态管理,state,getters,mutations,actons的简单使用(一)

热门文章

  1. 001_项目开源之_STM32激光雕刻机
  2. 02 | 日志系统:一条SQL更新语句是如何执行的?
  3. update更新操作的URL地址
  4. springboot2.0最精简的配置yml
  5. 微信小程序之简单记账本开发记录(二)
  6. 代码审计-Typecho反序列化getshell
  7. Notepad++编辑.sh文件
  8. Memcached 之在win10上的安装
  9. JAVA基础知识|抽象类与接口类
  10. JAVA基础知识|HTTP协议-两个特性