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 相关文章推荐
Ext JS Grid在IE6 下宽度的问题解决方法
Feb 15 Javascript
JQuery防止退格键网页后退的实现代码
Mar 23 Javascript
jQuery实现手机号码输入提示功能实例
Apr 30 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
Aug 24 Javascript
浅谈Angularjs link和compile的使用区别
Oct 21 Javascript
jQuery中的select操作详解
Nov 29 Javascript
JavaScript实现翻页功能(附效果图)
Feb 16 Javascript
JS解决移动web开发手机输入框弹出的问题
Mar 31 Javascript
详解vee-validate的使用个人小结
Jun 07 Javascript
基于vue 实现token验证的实例代码
Dec 14 Javascript
vue与原生app的对接交互的方法(混合开发)
Nov 28 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可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
js实现返回顶部效果
2017/03/10 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
jQuery代码优化方法总结
2018/01/29 jQuery
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
python对数组进行反转的方法
2015/05/20 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
Python的装饰器用法学习笔记
2016/06/24 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
幼儿园小班评语大全
2014/04/17 职场文书
职位说明书范文
2014/05/07 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
公司股东出资证明书
2014/11/01 职场文书
事业单位考察材料范文
2014/12/25 职场文书
好员工观后感
2015/06/17 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
iPhone13将有八大升级
2021/04/15 数码科技