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 相关文章推荐
js表格分页实现代码
Sep 18 Javascript
用客户端js实现带省略号的分页
Apr 27 Javascript
js获取html文件的思路及示例
Sep 17 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
Feb 13 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
Mar 04 Javascript
JavaScript中创建对象的模式汇总
Apr 19 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
jquery easyui如何实现格式化列
Jul 30 jQuery
浅谈ajax请求不同页面的微信JSSDK问题
Feb 26 Javascript
vue-cli中vue本地实现跨域调试接口
Jan 16 Javascript
原生js+ajax分页组件
Jan 30 Javascript
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
简单易扩展可控性强的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
深入了解PHP类Class的概念
2012/06/14 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
微信小程序中setInterval的使用方法
2017/09/29 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python 创建子进程模块subprocess详解
2015/04/08 Python
python3抓取中文网页的方法
2015/07/28 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
linux面试题参考答案(3)
2012/09/13 面试题
电子商务专业个人的自我评价
2013/12/19 职场文书
文秘专业个人求职信
2013/12/22 职场文书
员工拾金不昧表扬信
2014/01/09 职场文书
教师岗位职责范本
2015/04/02 职场文书
实践论读书笔记
2015/06/29 职场文书
培训计划通知
2015/07/15 职场文书
小学语文教师研修日志
2015/11/13 职场文书
Python基础之pandas数据合并
2021/04/27 Python
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL