vue指令以及dom操作详解

发布时间 - 2026-01-10 23:26:07    点击率:

“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

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


# vue2.0  # dom操作  # vue中操作dom  # vue.js2.0  # vue操作dom元素的3种方法示例  # vue中对虚拟dom的理解知识点总结  # vue中的dom节点和window对象  # 自定义  # 绑定  # 用了  # 是一个  # 就会  # 让我  # 也会  # 在这个  # 就能  # 不需要  # 这么多  # 把它  # 这是我  # 可在  # 少了  # 大行其道  # 那时候  # 被称为  # 并不能  # 有两种 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  动图在线制作网站有哪些,滑动动图图集怎么做?  Laravel怎么实现模型属性的自动加密  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  新三国志曹操传主线渭水交兵攻略  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  php结合redis实现高并发下的抢购、秒杀功能的实例  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  如何打造高效商业网站?建站目的决定转化率  网站建设保证美观性,需要考虑的几点问题!  JS经典正则表达式笔试题汇总  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  详解Oracle修改字段类型方法总结  三星、SK海力士获美批准:可向中国出口芯片制造设备  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  JS实现鼠标移上去显示图片或微信二维码  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Laravel如何实现模型的全局作用域?(Global Scope示例)  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  微信小程序 wx.uploadFile无法上传解决办法  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  香港网站服务器数量如何影响SEO优化效果?  如何在IIS7中新建站点?详细步骤解析  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  如何在建站之星绑定自定义域名?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Swift开发中switch语句值绑定模式  java中使用zxing批量生成二维码立牌  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  高防服务器如何保障网站安全无虞?  如何在IIS中新建站点并解决端口绑定冲突?  JavaScript数据类型有哪些_如何准确判断一个变量的类型  BootStrap整体框架之基础布局组件  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  图册素材网站设计制作软件,图册的导出方式有几种?