vue自定义指令用法经典实例小结


Posted in Javascript onMarch 16, 2019

本文实例总结了vue自定义指令用法。分享给大家供大家参考,具体如下:

自定义指令:

一、属性:

Vue.directive(指令名称,function(参数){
  this.el  -> 原生DOM元素
});
<div v-red="参数"></div>

指令名称:     v-red  ->  red

* 注意: 必须以 v-开头

拖拽:

二、自定义元素指令:(用处不大)

Vue.elementDirective('zns-red',{
  bind:function(){
    this.el.style.background='red';
  }
});

自定义指令写法一:

<div id="box">
  <span v-red>
    asdfasd
  </span>
</div>
Vue.directive('red',function(){
  this.el.style.background='red';
});
window.onload=function(){
  var vm=new Vue({
    el:'#box',
    data:{
      msg:'welcome'
    }
  });
};

测试示例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>3water.com 自定义指令写法一</title>
<script src="https://cdn.bootcss.com/vue/1.0.4/vue.min.js"></script>
<script>
Vue.directive('red',function(){
  this.el.style.background='red';
});
window.onload=function(){
  var vm=new Vue({
    el:'#box',
    data:{
      msg:'welcome'
    }
  });
};
</script>
</head>
<body>
<div id="box">
  <span v-red>
    asdfasd
  </span>
</div>
</body>
</html>

自定义指令写法二:推荐写法

<div id="box">
  <span v-red="a">
    asdfasd
  </span>
</div>
//这里的color可以传参
Vue.directive('red',function(color){
  this.el.style.background=color;
});
window.onload=function(){
  var vm=new Vue({
    el:'#box',
    data:{
      a:'blue'
    }
  });
};

测试示例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>3water.com 自定义指令写法二</title>
<script src="https://cdn.bootcss.com/vue/1.0.4/vue.min.js"></script>
<script>
//这里的color可以传参
Vue.directive('red',function(color){
  this.el.style.background=color;
});
window.onload=function(){
  var vm=new Vue({
    el:'#box',
    data:{
      a:'blue'
    }
  });
};
</script>
</head>
<body>
<div id="box">
  <span v-red="a">
    asdfasd
  </span>
</div>
</body>
</html>

自定义指令写法三:

<div id="box">
  <span v-red>
    asdfasd
  </span>
</div>
Vue.directive('red',{
  bind:function(){
    this.el.style.background='red';
  }
});
window.onload=function(){
  var vm=new Vue({
    el:'#box'
  });
};

自定义指令:拖拽drag

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>3water.com 自定义指令:拖拽drag</title>
  <script src="https://cdn.bootcss.com/vue/1.0.4/vue.min.js"></script>
  <script>
    Vue.directive('drag',function(){
      var oDiv=this.el;
      oDiv.onmousedown=function(ev){
        var disX=ev.clientX-oDiv.offsetLeft;
        var disY=ev.clientY-oDiv.offsetTop;
        document.onmousemove=function(ev){
          var l=ev.clientX-disX;
          var t=ev.clientY-disY;
          oDiv.style.left=l+'px';
          oDiv.style.top=t+'px';
        };
        document.onmouseup=function(){
          document.onmousemove=null;
          document.onmouseup=null;
        };
      };
    });
    window.onload=function(){
      var vm=new Vue({
        el:'#box',
        data:{
          msg:'welcome'
        }
      });
    };
  </script>
</head>
<body>
  <div id="box">
    <div v-drag :style="{width:'100px', height:'100px', background:'blue', position:'absolute', right:0, top:0}"></div>
    <div v-drag :style="{width:'100px', height:'100px', background:'red', position:'absolute', left:0, top:0}"></div>
  </div>
</body>
</html>

自定义元素指令

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>3water.com 自定义元素指令</title>
  <style>
    zns-red{
      width:100px;
      background: gray;
      height:100px;
      display: block;
    }
  </style>
  <script src="https://cdn.bootcss.com/vue/1.0.4/vue.min.js"></script>
  <script>
    Vue.elementDirective('zns-red',{
      bind:function(){
        this.el.style.background='red';
      }
    });
    window.onload=function(){
      var vm=new Vue({
        el:'#box',
        data:{
          a:'blue'
        }
      });
    };
  </script>
</head>
<body>
  <div id="box">
    <zns-red></zns-red>
  </div>
</body>
</html>

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
Mar 27 Javascript
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
一些相见恨晚的 JavaScript 技巧
Apr 25 Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
jquery鼠标停止移动事件
Dec 21 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
JavaScript中重名的函数与对象示例详析
Sep 28 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
Dec 03 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
Nov 05 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 #jQuery
基于vue通用表单解决方案的思考与分析
Mar 16 #Javascript
vue+php实现的微博留言功能示例
Mar 16 #Javascript
一些你可能不熟悉的JS知识点总结
Mar 15 #Javascript
使用element-ui table expand展开行实现手风琴效果
Mar 15 #Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 #Javascript
vue过滤器用法实例分析
Mar 15 #Javascript
You might like
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php获取错误信息的方法
2015/07/17 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
JS实现随机抽取三人
2019/11/06 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
python实现线程池的方法
2015/06/30 Python
Python脚本暴力破解栅栏密码
2015/10/19 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Numpy数组的保存与读取方法
2018/04/04 Python
python3 实现口罩抽签的功能
2020/03/11 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
高三自我鉴定怎么写
2013/10/19 职场文书
文明寄语大全
2014/04/11 职场文书
公证委托书
2014/08/01 职场文书
大型公益活动策划方案
2014/08/20 职场文书
2014年体育部工作总结
2014/11/13 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
会议室使用管理制度
2015/08/06 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python