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中变量相关的细节分析
Aug 13 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 Javascript
最棒的Angular2表格控件
Aug 10 Javascript
JS实现的五级联动菜单效果完整实例
Feb 23 Javascript
Angular 数据请求的实现方法
May 07 Javascript
在vue中使用Autoprefixed的方法
Jul 27 Javascript
react中实现搜索结果中关键词高亮显示
Jul 31 Javascript
vue使用swiper.js重叠轮播组建样式
Nov 14 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
Jul 26 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 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
基于mysql的bbs设计(一)
2006/10/09 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
php集成动态口令认证
2016/07/21 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
React Native之TextInput组件解析示例
2017/08/22 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
应征英语教师求职信
2013/11/27 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
安全生产月宣传标语
2014/10/06 职场文书
投资入股合作协议书
2014/10/28 职场文书
税务会计岗位职责
2015/04/02 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android