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 相关文章推荐
7个Javascript地图脚本整理
Oct 20 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
Mar 21 Javascript
jquery下div 的resize事件示例代码
Mar 09 Javascript
javascript实现PC网页里的拖拽效果
Mar 14 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
Nov 09 Javascript
Javascript 链式作用域详细介绍
Feb 23 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
在vue中使用Autoprefixed的方法
Jul 27 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
bootstrap中的导航条实例代码详解
May 20 Javascript
前端路由&amp;webpack基础配置详解
Jun 10 Javascript
基于layui实现高级搜索(筛选)功能
Jul 26 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
web方式ftp
2006/10/09 PHP
社区(php&amp;&amp;mysql)一
2006/10/09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
webpack4.x CommonJS模块化浅析
2018/11/09 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
python实现从字典中删除元素的方法
2015/05/04 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
谈谈Python中的while循环语句
2019/03/10 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
采购主管岗位职责
2014/02/01 职场文书
保密承诺书范文
2014/03/27 职场文书
学校工作推荐信范文
2014/07/11 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书