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 相关文章推荐
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
ExtJs扩展之GroupPropertyGrid代码
Mar 05 Javascript
vs2003 js文件编码问题的解决方法
Mar 20 Javascript
jQuery maxlength文本字数限制插件
Apr 16 Javascript
在网站上应该用的30个jQuery插件整理
Nov 03 Javascript
JS调用CS里的带参方法实例
Aug 01 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
Sep 04 Javascript
ajax异步请求详解
Jan 06 Javascript
Angular排序实例详解
Jun 28 Javascript
微信小程序多音频播放进度条问题
Aug 28 Javascript
Vue常见面试题整理【值得收藏】
Sep 20 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电台频率大全 - 24 贵州省
2020/03/11 无线电
php disk_free_space 返回目录可用空间
2010/05/10 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
js数组的操作详解
2013/03/27 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
如何给Python代码进行加密
2020/01/10 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
个人求职简历的自我评价
2013/10/19 职场文书
护士求职信
2014/07/05 职场文书
小学教代会开幕词
2016/03/04 职场文书
详解php中流行的rpc框架
2021/05/29 PHP
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python