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去空格处理方法
Nov 18 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
May 14 Javascript
formValidator3.3的ajaxValidator一些异常分析
Jul 12 Javascript
JS和Jquery获取和修改label的值的示例代码
Jan 15 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
详解搭建es6+devServer简单开发环境
Sep 25 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
Jun 27 Javascript
vuejs中父子组件之间通信方法实例详解
Jan 17 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 29 Javascript
vue+echarts实现动态折线图的方法与注意
Sep 01 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 array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
python类的实例化问题解决
2019/08/31 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
animation和transition的区别
2020/10/12 HTML / CSS
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
戴尔美国官网:Dell
2016/08/31 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
婚礼答谢宴主持词
2014/03/14 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
小鞋子观后感
2015/06/05 职场文书
学习心得体会
2019/06/20 职场文书