vue自定义指令的创建和使用方法实例分析


Posted in Javascript onDecember 04, 2018

本文实例讲述了vue自定义指令的创建和使用方法。分享给大家供大家参考,具体如下:

一、自定义指令的创建和使用

Vue自带的指令很多,v-for/v-if/v-else/v-else-if/v-model/v-bind/v-on/v-show/v-html/v-text...
但是这些指令都是比较偏向于工具化,有些时候在实现具体的业务逻辑的时候,发现不够用,如何来自定义指令.

1、自定义指令

① 创建

new Vue({
directives:{


change:{



bind:function(){},



update:function(){},



unbind:function(){}


}

}
})

在自定义指令时,在指令对应的配置对象中有3个处理函数指令对应的操作

bind

指令在绑定到元素要执行的操作
update

如果在调用指令时候,传了参数,当参数变化时候,就会执行update所指定的方法
unbind

解绑要执行的操作

② 使用自定义指令

directives:{
hello:{


bind:function(){},


update:function(){},


unbind:function(){}

}
}

使用:

v-hello

注意事项:

建议在给指令的命名采用小驼峰式的命名方式,比如changeBackgroundColor,在使用的时候,采用烤串式写法 v-change-background-color

(方法:参数,返回值)

bind方法以及update方法 都是有参数的,
一个是el,对应的是调用指令的元素
一个bindings,是一个对象:name/rawName/value/oldValue...

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script>
  <title>3water.com vue自定义指令</title>
</head>
<body>
<div id="container">
  <p>{{msg}}</p>
  <!-- 准备实现需求:
  在h1标签上面,加上一个按钮,当点击按钮时候,对count实现一次
  自增操作,当count等于5的时候,在控制台输出‘it is a test'
  -->
  <button @click="handleClick">clickMe</button>
  <h1
      v-if="count < 6"
      v-change="count">it is a custom directive</h1>
</div>
<script>
  //directive
  new Vue({
    el: '#container',
    data: {
      msg: 'Hello Vue',
      count:0
    },
    methods:{
      handleClick: function () {
        //按钮单击,count自增
        this.count++;
      }
    },
    directives:{
      change:{
        bind: function (el,bindings) {
          console.log('指令已经绑定到元素了');
          console.log(el);
          console.log(bindings);
          //准备将传递来的参数
          // 显示在调用该指令的元素的innerHTML
          el.innerHTML = bindings.value;
        },
        update: function (el,bindings) {
          console.log('指令的数据有所变化');
          console.log(el);
          console.log(bindings);
          el.innerHTML = bindings.value;
          if(bindings.value == 5)
          {
            console.log(' it is a test');
          }
        },
        unbind: function () {
          console.log('解除绑定了');
        }
      }
    }
  })
</script>
</body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试,可得到如下运行效果:

vue自定义指令的创建和使用方法实例分析

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script>
  <title>3water.com vue自定义指令</title>
</head>
<body>
<div id="container">
  <p>{{msg}}</p>
  <h1 v-change-background-color="myBgColor">
    it is a header1
  </h1>
</div>
<script>
  new Vue({
    el: '#container',
    data: {
      msg: 'Hello Vue',
      myBgColor:'#ff0000'
    },
    directives:{
      changeBackgroundColor:{
        bind: function (el,bindings) {
          console.log('in bind ');
          console.log(bindings.value);
          el.style.backgroundColor = bindings.value;
        }
      }
    }
  })
</script>
</body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试,可得到如下运行效果:

vue自定义指令的创建和使用方法实例分析

<h4 v-change-background-color="'red'">背景色</h4>这样也是可以的,但是写死了,不好

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
一段效率很高的for循环语句使用方法
Aug 13 Javascript
js 字符串操作函数
Jul 25 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
js处理php输出时间戳对不上号的解决方法
Jun 20 Javascript
js实现表单检测及表单提示的方法
Aug 14 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
Koa2 之文件上传下载的示例代码
Mar 29 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
vue基础之v-bind属性、class和style用法分析
Mar 11 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
用vuex写了一个购物车H5页面的示例代码
Dec 04 #Javascript
vue实现的双向数据绑定操作示例
Dec 04 #Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 #jQuery
jQuery利用FormData上传文件实现批量上传
Dec 04 #jQuery
vue实现的组件兄弟间通信功能示例
Dec 04 #Javascript
微信小程序模板template简单用法示例
Dec 04 #Javascript
vue项目刷新当前页面的三种方法
Dec 04 #Javascript
You might like
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
JS实现自动阅读单词(有道单词本添加功能)
2016/11/14 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
python写一个md5解密器示例
2018/02/23 Python
python+pyqt5编写md5生成器
2019/03/18 Python
python实现kmp算法的实例代码
2019/04/03 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
python中如何写类
2020/06/29 Python
Pandas的Apply函数具体使用
2020/07/21 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
PHP开发的一般流程
2013/08/13 面试题
教师应聘个人求职信
2013/12/10 职场文书
趣味游戏活动方案
2014/02/07 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
代理人委托书
2014/09/16 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python