举个例子 :clickoutside.js

const clickoutsideContext = '@@clickoutsideContext';export default {/*@param el 指令所绑定的元素@param binding {Object} @param vnode vue编译生成的虚拟节点*/bind (el, binding, vnode) {const documentHandler = function(e) {console.log(el)console.log(e.target);console.log(vnode);console.log(binding);if(!vnode.context || el.contains(e.target)) {return false;}if (binding.expression) {vnode.context[el[clickoutsideContext].methodName](e)} else {el[clickoutsideContext].bindingFn(e);}}el[clickoutsideContext] = {documentHandler,methodName: binding.expression,bindingFn: binding.value}setTimeout(() => {document.addEventListener('click', documentHandler);}, 0)},update (el, binding) {el[clickoutsideContext].methodName = binding.expression;el[clickoutsideContext].bindingFn = binding.value;},unbind(el) {document.removeEventListener('click', el[clickoutsideContext].documentHandler);}
}

directive是怎么实现的呢?

1、在binding中写绑定方法

2、方法需要写在一个环境(context)中,放置泄露

如上定义了:el[clickoutsideContext]

转载于:https://www.cnblogs.com/heyinwangchuan/p/8052211.html

如何写一个vue指令directive相关推荐

  1. 如何写一个Vue自定义指令

    Vue除了核心功能默认内置的指令 ,Vue 也允许注册自定义指令. 自定义指令是用来操作DOM的.尽管Vue推崇数据驱动视图的理念,但并非所有情况都适合数据驱动.自定义指令就是一种有效的补充和扩展,不 ...

  2. 面试题:你能写一个Vue的双向数据绑定吗?

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希望 ...

  3. 面试题:你能写一个 Vue 的双向数据绑定吗?

    作者:呆头呆脑丶 segmentfault.com/a/1190000014274840 在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理 ...

  4. 写一个Vue的双向数据绑定

    原文 https://segmentfault.com/a/1190000014274840 在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出 ...

  5. 你能写一个 Vue 的双向数据绑定吗?

    在目前的前端面试中,vue的双向数据绑定已经成为了一个非常容易考到的点,即使不能当场写出来,至少也要能说出原理.本篇文章中我将会仿照vue写一个双向数据绑定的实例,名字就叫myVue吧.结合注释,希望 ...

  6. 手写一个vue中英文翻译组件

    1:下载vue-i18n插件 npm install vue-i18n 2:创建中英文js文件 在文件中写入需要翻译的内容 中文版cn.js export const m = {help: " ...

  7. 分享:你会写一个vue的双向数据绑定吗?

    <!DOCTYPE html> <html> <head><title></title> </head> <body> ...

  8. 写一个简单易用可扩展vue表单验证插件(vue-validate-easy)

    写一个vue表单验证插件(vue-validate-easy) 需求 目标:简单易用可扩展 如何简单 开发者要做的 写了一个表单,指定一个name,指定其验证规则. 调用提交表单方法,可以获取验证成功 ...

  9. vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)

    一.自定义指令directive 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的 ...

最新文章

  1. 华为鲲鹏高校行长沙启航,助力基础研究成果转化
  2. JS循环绑定对象或变量
  3. epub阅读器_推荐一款Epub(windows版)阅读软件,附下载安装教程
  4. 安装archlinux_archlinux/manjaro 上安装percona-server
  5. 数据镜像备份工具rsync
  6. php如何输出复选框的值,php 怎么输出复选框呢?
  7. 前端python与php_WEB前端、PHP、python这三个学习哪一个比较好?
  8. python对日期型数据排序_如何对日期执行数学运算并用Python对它们进行排序?
  9. Mybatis框架相关知识讲解
  10. 全球首台商用量子计算机发布!体积如同大象,算力不及笔记本
  11. 终面后拿offer几率_战绩 | 恭喜VIP学员斩获德勤(北京)风险分析师全职Offer!...
  12. Python实战之Selenium自动化测试web刷新FW
  13. 【java与智能设备】01_2Android简介与环境搭建——开发环境
  14. 顺序表构建学生信息管理系统(C++)
  15. 关于调研微信的几点理解
  16. layui 之可搜索的下拉框select lay-serach
  17. html简繁体转换,在线繁体字转换工具
  18. 如何把妹子拍得更好看?
  19. Android 热点开启流程
  20. python:24点游戏

热门文章

  1. python中mainloop添加背景_Python实例讲解 - tkinter canvas (设置背景图片及文字)
  2. mongoDB中的数据类型
  3. C学习杂记(六)%2.0f打印输出宽度
  4. echarts formatter鼠标悬停显示信息
  5. 《MySQL——约束》
  6. 【设计模式之美】<Reading Notes>贫血模型与充血模型
  7. 【设计模式之美】<Reading Notes>抽象类与接口
  8. let 只能在严格模式下吗_LET的完整形式是什么?
  9. Java——集合(练习题)
  10. Cake -- ACM解决方法