vue指令以及dom操作详解


Posted in Javascript onMarch 04, 2017

“AngularJS 通过被称为 指令 的新属性来扩展 HTML。AngularJS 通过内置的指令来为应用添加功能。AngularJS 允许你自定义指令。”

这是我最初接触“指令”这个词。还记得那时候,ng大行其道的时候,我特别好奇怎么给一个div加一个"ng-app" 就能解决这么多问题。

后来随着前端工作的深入,我用了jq的data-attr并且学会了jq的插件使用。但,这这并不能让我把它“指令”联想到一块,后来插件需要给节点加个标示来显示某种“状态管理” 我用了class  例如:pending,loading-end.

但是感觉和样式混在一块总是感觉不自在,后来我直接添加一个自定义标签 例如:attr-pending,attr-loading-end,通过dom上的自定义标签来标示某个状态是否完成。

在这个时候,发现"attr-pending,attr-loading-end"与“ng-app,ng-html”什么的非常类似,才恍然大悟,其实“指令”也可以理解为"标识",而具体的逻辑与它无关,它只是一个“标识”罢了。至于,ng-repeat,ng-click  同样可以理解某个程序在dom上一个“标识” 程序通过它来挂载某个功能。

现在接触了vue,vue比ng在开发上来说代码量很明显少了很多,“指令”一般开发人员不需要自己来实现。但是如果是开发一套ui交互的组件,还是很需要它。

bind: 仅调用一次,当指令第一次绑定元素的时候。

update: 第一次是紧跟在 bind 之后调用,获得的参数是绑定的初始值;以后每当绑定的值发生变化就会被调用,获得新值与旧值两个参数。

unbind:仅调用一次,当指令解绑元素的时候。

1.指令的注册

指令跟组件一样需要注册才能使用,同样有两种方式,一种是全局注册:

Vue.directive('dirName',function(){
//定义指令
});

另外一种是局部注册:
new Vue({

directives:{


dirName:{




//定义指令


}

}
});

2.可在指令函数配置中直接修改DOM[支持数据驱动] input里面的值修改的时候#demo里面的vue也会自动同步

<!DOCTYPE html> 
<html> 
<head lang="en"> 
 <meta charset="UTF-8"> 
 <title></title> 
 <script src="http://cdnjs.cloudflare.com/ajax/libs/vue/0.12.16/vue.min.js"></script> 
</head> 
<body> 
<div> 
  <p>展示vue指令----vue和元素dom操作的完美结合【拓展】</p> 
  <p>{{msg}}</p> 
  <input type="text" v-model="msg"> 
</div> 
<div id="demo" v-demo-directive="LightSlateGray : msg"></div> 
 
<script> 
 Vue.directive('demoDirective', { 
  bind: function () { 
   this.el.style.color = '#fff' 
   this.el.style.backgroundColor = this.arg 
  }, 
  update: function (value) { 
   this.el.innerHTML = 
     'name - '  + this.name + '<br>' + 
     'raw - '  + this.raw + '<br>' + 
     'expression - ' + this.expression + '<br>' + 
     'argument - ' + this.arg + '<br>' + 
     'value - '  + value 
  } 
 }); 
 var demo = new Vue({ 
  el: 'body', 
  data: { 
   msg: 'hello!' 
  } 
 }) 
 
</script> 
</body> 
</html>

官网链接: http://v1-cn.vuejs.org/guide/custom-directive.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 异步方法队列链实现代码分析
Jun 05 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
Aug 13 Javascript
Javascript中this的用法详解
Sep 22 Javascript
jQuery制作仿Mac Lion OS滚动条效果
Feb 10 Javascript
jQuery实现连续动画效果实例分析
Oct 09 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
Aug 11 Javascript
Bootstrap媒体对象学习使用
Mar 07 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
微信小程序实现MUI数字输入框效果
Jan 31 Javascript
Node.js实现注册邮箱激活功能的方法示例
Mar 23 Javascript
JavaScript中的this妙用实例分析
May 09 Javascript
封装 axios+promise通用请求函数操作
Aug 11 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
Mar 04 #Javascript
详解在Vue中通过自定义指令获取dom元素
Mar 04 #Javascript
在javaScript中检测数据类型的几种方式小结
Mar 04 #Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
Mar 04 #Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
Mar 04 #Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 #Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
Mar 04 #Javascript
You might like
有关 PHP 和 MySQL 时区的一点总结
2008/03/26 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
js null,undefined,字符串小结
2010/08/21 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
简明 Python 基础学习教程
2007/02/08 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
对python Tkinter Text的用法详解
2018/10/11 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
关于Django Models CharField 参数说明
2020/03/31 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
童装店创业计划书
2014/01/09 职场文书
小学教师师德反思
2014/02/03 职场文书
大学活动总结模板
2014/07/10 职场文书
师范毕业生求职信
2014/07/11 职场文书
2014年计生工作总结
2014/11/21 职场文书
银行实习推荐信
2015/03/27 职场文书
仰望星空观后感
2015/06/10 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript