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 相关文章推荐
JavaScript入门教程(9) Document文档对象
Jan 31 Javascript
js下用gb2312编码解码实现方法
Dec 31 Javascript
jquery 选项卡效果 新手代码
Jul 08 Javascript
js操作checkbox遇到的问题解决
Jun 29 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
PHP中CURL的几个经典应用实例
Jan 23 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
Mar 04 Javascript
jQuery实用技巧必备(下)
Nov 03 Javascript
jQuery添加options点击事件并传值实例代码
May 18 Javascript
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
Vue实现自定义下拉菜单功能
Jul 16 Javascript
Vue 实现拨打电话操作
Nov 16 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
解析php中const与define的应用区别
2013/06/18 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
php实现websocket实时消息推送
2018/03/30 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
javascript中获取选中对象的类型
2007/04/02 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
Jquery性能优化详解
2014/05/15 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
python循环监控远程端口的方法
2015/03/14 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
python+mysql实现教务管理系统
2019/02/20 Python
python对常见数据类型的遍历解析
2019/08/27 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
Python中的整除和取模实例
2020/06/03 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
JavaScript 实现页面滚动动画
2021/04/24 Javascript