Vue.directive()的用法和实例详解


Posted in Javascript onMarch 04, 2018

官网实例:

https://cn.vuejs.org/v2/api/#Vue-directive

https://cn.vuejs.org/v2/guide/custom-directive.html

指令定义函数提供了几个钩子函数(可选):

bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。
inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。

update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新(详细的钩子函数参数见下)。

componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。

unbind: 只调用一次, 指令与元素解绑时调用。

本人菜鸟型,看官网蒙圈,然后百度Vue.directive()的实例和用法,有的很高深,有的不健全,我贴上两个简单的demo,希望对看到的朋友有帮助:

1、官网给出的demo,刷新页面input自动获取焦点:

<div id="app"> 
<SPAN style="WHITE-SPACE: pre"> </SPAN><input type="text" v-focus/> 
</div> 

<div id="app">
 <input type="text" v-focus/>
</div>

// 注册一个全局自定义指令 v-focus  
Vue.directive('focus', { 
  // 当绑定元素插入到 DOM 中。  
  inserted: function (el,binding) { 
    <SPAN style="WHITE-SPACE: pre"> </SPAN>// 聚焦元素  
    <SPAN style="WHITE-SPACE: pre"> </SPAN>el.focus(); 
  } 
}); 
new Vue({ 
el:'#app' 
}); 
// 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
  // 当绑定元素插入到 DOM 中。
  inserted: function (el,binding) {
   // 聚焦元素
   el.focus();
 }
});
new Vue({

el:'#app'
});

2、一个拖拽的demo: 1)被拖拽的元素必须用position定位,才能被拖动;

2)自定义指令完成后需要实例化Vue,挂载元素;

3)inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。

<style type="text/css"> 
  .one,.two{ 
    height:100px; 
    width:100px; 
    border:1px solid #000; 
    position: absolute; 
    -webkit-user-select: none; 
    -ms-user-select: none; 
    -moz-user-select: -moz-none; 
    cursor: pointer; 
  } 
  .two{ 
    left:200px; 
  } 
</style> 
<div id="app"> 
  <div class="one" v-drag>拖拽one</div> 
  <div class="two" v-drag>拖拽two</div> 
</div> 
<style type="text/css">
 .one,.two{
 height:100px;
 width:100px;
 border:1px solid #000;
 position: absolute;
 -webkit-user-select: none;
 -ms-user-select: none;
 -moz-user-select: -moz-none;
 cursor: pointer;
 }
 .two{
 left:200px;
 }
</style>
<div id="app">
 <div class="one" v-drag>拖拽one</div>
 <div class="two" v-drag>拖拽two</div>
</div>
[javascript] view plain copy print?Vue.directive('drag', { 
  inserted:function(el){ 
    el.onmousedown=function(e){ 
      let l=e.clientX-el.offsetLeft; 
      let t=e.clientY-el.offsetTop; 
      document.onmousemove=function(e){ 
        el.style.left=e.clientX-l+'px'; 
        el.style.top=e.clientY-t+'px'; 
      }; 
      el.onmouseup=function(){ 
        document.onmousemove=null; 
        el.onmouseup=null; 
      } 
    } 
  } 
}) 
new Vue({ 
el:'#app' 
});

总结

以上所述是小编给大家介绍的Vue.directive()的用法和实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
javascript 写类方式之五
Jul 05 Javascript
JavaScript模拟重力状态下抛物运动的方法
Mar 03 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
Sep 15 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
Dec 15 Javascript
js实现城市级联菜单的2种方法
Jun 23 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
Oct 30 Javascript
vue.js使用v-if实现显示与隐藏功能示例
Jul 06 Javascript
给localStorage设置一个过期时间的方法分享
Nov 06 Javascript
vue实现简单的星级评分组件源码
Nov 16 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 #Javascript
JavaScript图片处理与合成总结
Mar 04 #Javascript
微信web端后退强制刷新功能的实现代码
Mar 04 #Javascript
编写React组件项目实践分析
Mar 04 #Javascript
Vue组件开发技巧总结
Mar 04 #Javascript
代码详解javascript模块加载器
Mar 04 #Javascript
Vue用v-for给src属性赋值的方法
Mar 03 #Javascript
You might like
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
Javascript中的数学函数
2007/04/04 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
运动会稿件100字
2014/02/21 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js