使用过Vue的同学都应该有这样一个感觉,在vue中页面是基于数据驱动的,不需要我们自己操作dom,框架帮我们完成了这一步,事实上Vue官方也建议我们这样做

在绝大多数情况下是不需要操作dom就可以完成效果的,但是在极少数情况下需要我们操作dom,例如以下情况

我有如下一个表单,但用户点击提交时,校验表单各字段是否为空,如果为空,则让该字段输入框背景色为红色,同时获得焦点

如果使用jquery,我们可以给每个输入框一个id值,然后判断字段值为空时根据id获取元素,然后设置背景色等

这样做的话意味着需要给每一个元素一个id,同时需要逐个判断,如果字段值多的情况下需要写很多if分支

并且因为要让文本框获得焦点,我们就必须要拿到该文本框,然后调用focus方法

所以问题的难点还是在于如何拿到该元素

Vue指令(directive)给我们提供了另一种解决方案

        <form action="#">
<label for="name">
Your Name : <br>
<input type="text" name="name" v-model="person.name.val" v-my-directive="person.name">
</label>
<br>
<label for="email">
Your Email : <br>
<input type="email" name="email" v-model="person.email.val" v-my-directive="person.email">
</label>
<br>
<label for="address">
Your Address : <br>
<textarea name="address" id="address" cols="40" rows="5" v-model="person.address.val" v-my-directive="person.address"></textarea>
</label>
<br>
<button @click.prevent="submit">提交</button>
</form>
//全局注册
Vue.directive('my-directive', function (el, binding) {
//获取指令的绑定值
var obj = binding.value;
if (obj != null) {
//将改元素绑定到该对象的 el 属性上
Vue.set(obj, key, 'el');
}
}); var app = new Vue({
el: '#app',
data: {
person : {
name : { val : ''},
address : { val : ''},
email: { val : ''}
}
},
methods: {
submit: function() {
for(var obj in this.person){
if(this.person[obj].val == ''){
this.person[obj].el.focus()
this.person[obj].el.style.backgroundColor="pink"
return
}
}
}
}
})

[记录] Vue中的dom操作的更多相关文章

  1. Vue中的DOM操作

    1.在要获取的标签中添加 ref="xx" 示例: <button ref="btn">一个按钮</button> 2.在 mounte ...

  2. 第七十六篇:ref引用(在vue中引用Dom的方法)

    好家伙, 引子: jQuery简化了程序员操作DOM的过程 vue 优势:MVVM 在vue中,程序员不需要操作DOM.程序员只需要把数据维护好即可!(数据驱动视图) 那么若要在vue中操作dom,这 ...

  3. 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】

    一.JQuery中的DOM操作. 什么是DOM:DOM是一中和浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DOM简称文档对象模型,是Document Oject Mode ...

  4. dom core,html dom,css dom,jquery 中的dom操作

    前端开发中为达到某种目的,往往有很多方法:dom core,html dom,jquery; dom core/jquery主要通过函数调用的方式(getAttribute("属性名&quo ...

  5. jQuery中的DOM操作<思维导图>

    DOM是Document Object Model的缩写,意思是文档对象模型.DOM是一种与浏览器.平台.语言无关的接口.使用该接口可以轻松地访问页面中所有的标准组件.简单来说,DOM解决了Netsc ...

  6. Jquery:jquery中的DOM操作<一>

    之前两天学习了Jquery强大的选择器,今天学习了一部分Jquery对DOM的操作,下面我将把自己今天的成果分享给大家,那些菜鸟们,你们是否需要巩固之前所学? 首先需要知道,DOM操作分为3个方面:D ...

  7. jQuery中的DOM操作总结

    jQuery中的DOM操作 DOM是Document Object Medel的缩写,它的意思是文档对象模型,根据W3C的官方说法,DOM是一种跟浏览器,平台以及语言都没有关系的一种规范,也就是一种接 ...

  8. jQuery中的DOM操作《思维导图》

    首先,是关于jQuery中的DOM操作的<思维导图>,请点击这里:jQuery中的DOM操作 列表框的左右选项移动 <html> <head> <title& ...

  9. 第三章(jQuery中的DOM操作)

    3.1 DOM 操作分类 ①DOM Core 包括(getElementById() , getElementsByTagName() , getAttribute() , setAttribute( ...

随机推荐

  1. 最新版SEMCMS_PHP_3.5 过滤不严导致sql注入

    一.漏洞分析 在分析过程中看到网上已经有人发现semcms V2.4存在过滤不严导致sql注入的漏洞,不知道咋还没改,而且最新版过滤的关键字更少了. 首先查看首页文件index.php的代码 < ...

  2. javascript 创建节点和新增节点

    createElement(tabName) 创建一个为tagName的新元素节点 ANode.appendChild(BNode)把B节点追加至A节点的末尾 insertBefore(ANode,B ...

  3. Developing avb

    ai automake  ai libtool  ai pkg-config autogen ai libgstreamer1.0-0  ai libgstreamer1.0-dev  ai chec ...

  4. mailto链接

    mailto链接是一种html链接,能够设置你电脑中邮件的默认发送信息,但是需要你电脑安装默认的E-mail软件,类似Microsoft Outlook等,那么点击mailto链接就可以获得默认设置的 ...

  5. 图像频谱图画图——matlab

    I =imread('C:\Users\wangd\Desktop\in000155.jpg'); %读入原图像文件 I1 = rgb2gray(I); subplot(,,);imshow(I1); ...

  6. win7和linux下利用命令查看文件md5、sha1、sha256

    win7 certutil -hashfile <filename> MD5 certutil -hashfile <filename> SHA1 certutil -hash ...

  7. 用openssl为WEB服务器生成证书(自签名CA证书,服务器证书)

    用openssl为WEB服务器生成证书(自签名CA证书,服务器证书) 来源: https://www.cnblogs.com/osnosn/p/10608455.html 来自osnosn的博客 写于 ...

  8. RAMOS (内存操作系统)-无忧百科(不断完善中)

    RAMOS (内存操作系统)-无忧百科(不断完善中) - RAMOS - 无忧启动论坛 - Powered by Discuz! http://bbs.wuyou.net/forum.php?mod= ...

  9. mysql循环插入千万级数据

    mysql使用存储过程循环插入大量数据,简单的一条条循环插入,效率会很低,需要考虑批量插入. 测试准备: 1.建表: CREATE TABLE `mysql_genarate` ( `id` ) NO ...

  10. Java spring实现文件下载

    一,实现目的,后台写一个controller,然后前台页面点击文件下载,实现文件下载功能.(文件是存放于服务器的磁盘上的) @RequestMapping("/filesdownloads& ...