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 获取Listbox选择的值的代码
Apr 15 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
Dec 28 Javascript
JavaScript按位运算符的应用简析
Feb 04 Javascript
js获取IP地址的方法小结
Jul 01 Javascript
JavaScript实现Java中StringBuffer的方法
Feb 09 Javascript
jQuery 3.0 的变化及使用方法
Feb 01 Javascript
使用jQuery判断浏览器滚动条位置的方法
May 30 Javascript
Bootstrap CSS布局之表格
Dec 17 Javascript
微信小程序-获得用户输入内容
Feb 13 Javascript
vue v-on监听事件详解
May 17 Javascript
小程序实现分类页
Jul 12 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 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
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
python切换hosts文件代码示例
2013/12/31 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
Django添加feeds功能的示例
2018/08/07 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
python解析xml简单示例
2019/06/21 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
python设置表格边框的具体方法
2020/07/17 Python
三项教育活动实施方案
2014/03/30 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
街道务虚会发言材料
2014/10/20 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python