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 相关文章推荐
IE与Firefox下javascript getyear年份的兼容性写法
Dec 20 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
May 21 Javascript
jquery判断浏览器类型的代码
Nov 05 Javascript
js onclick事件传参讲解
Nov 06 Javascript
JS控制图片等比例缩放的示例代码
Dec 24 Javascript
js实现Select下拉框具有输入功能的方法
Feb 06 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
easyui-datagrid特殊字符不能显示的处理方法
Apr 12 Javascript
vue中的面包屑导航组件实例代码
Jul 01 Javascript
vue设置默认首页的操作
Aug 12 Javascript
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
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
消息持续发送的完整例子
2006/10/09 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python 字典(dict)按键和值排序
2016/06/28 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
女性励志书籍推荐
2019/08/19 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server