[记录] Vue中的dom操作
使用过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操作的更多相关文章
- Vue中的DOM操作
1.在要获取的标签中添加 ref="xx" 示例: <button ref="btn">一个按钮</button> 2.在 mounte ...
- 第七十六篇:ref引用(在vue中引用Dom的方法)
好家伙, 引子: jQuery简化了程序员操作DOM的过程 vue 优势:MVVM 在vue中,程序员不需要操作DOM.程序员只需要把数据维护好即可!(数据驱动视图) 那么若要在vue中操作dom,这 ...
- 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】
一.JQuery中的DOM操作. 什么是DOM:DOM是一中和浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DOM简称文档对象模型,是Document Oject Mode ...
- dom core,html dom,css dom,jquery 中的dom操作
前端开发中为达到某种目的,往往有很多方法:dom core,html dom,jquery; dom core/jquery主要通过函数调用的方式(getAttribute("属性名&quo ...
- jQuery中的DOM操作<思维导图>
DOM是Document Object Model的缩写,意思是文档对象模型.DOM是一种与浏览器.平台.语言无关的接口.使用该接口可以轻松地访问页面中所有的标准组件.简单来说,DOM解决了Netsc ...
- Jquery:jquery中的DOM操作<一>
之前两天学习了Jquery强大的选择器,今天学习了一部分Jquery对DOM的操作,下面我将把自己今天的成果分享给大家,那些菜鸟们,你们是否需要巩固之前所学? 首先需要知道,DOM操作分为3个方面:D ...
- jQuery中的DOM操作总结
jQuery中的DOM操作 DOM是Document Object Medel的缩写,它的意思是文档对象模型,根据W3C的官方说法,DOM是一种跟浏览器,平台以及语言都没有关系的一种规范,也就是一种接 ...
- jQuery中的DOM操作《思维导图》
首先,是关于jQuery中的DOM操作的<思维导图>,请点击这里:jQuery中的DOM操作 列表框的左右选项移动 <html> <head> <title& ...
- 第三章(jQuery中的DOM操作)
3.1 DOM 操作分类 ①DOM Core 包括(getElementById() , getElementsByTagName() , getAttribute() , setAttribute( ...
随机推荐
- 【解决】nginx 下$_SERVER['PATH_INFO'] 无法获取到内容
Apache是模块加载文件的,默认支持$_SERVER['PATH_INFO'] : 而对于Nginx下, 是不支持PATH INFO的, 也就是它不会默认设置PATH_INFO. 而因为Nginx默 ...
- 2. Packet crafting tools (封包工具 6个)
2. Packet crafting tools (封包工具 6个) NetcatHping这个方便小巧的实用程序组装并发送定制的ICMP,UDP或TCP数据包,然后显示任何回复. 它受到ping命令 ...
- centos 终端字体错位个别字母中间有间隔的解决
问题描述: linux系统:centos 终端:图形界面终端,通过startx启动 现象:通过终端输入的字体有重叠,字母之间的间隔也很大.由于字体安装不正确导致. 解决方法:通过下面字体的安装命令可以 ...
- response响应
郭晨 软件151 1531610114 response1.response常用APIsetStatus:设置响应行当中的状态码setHeader:设置响应头信息getOutputStream:获得字 ...
- c# 中 利用 CookieContainer 对 Cookie 进行序列化和反序列化校验
private void Form1_Load(object sender, EventArgs e) { var cookieStr = @".CNBlogsCookie=1BE76122 ...
- docker安装centos后没有ifconfig命令解决办法
使用docker pull centos命令下载下来的centos镜像是centos7的最小安装包,里面并没有携带ifconfig命令,导致我想查看容器内的ip时不知道该怎么办 yum provide ...
- Python assert(断言)
Python assert(断言)可以分别后面的判断是否正确,如果错误会报错 示例: a = 1 assert type(a) is int print('No problem') 输出结果: No ...
- celery+Rabbit MQ实战记录
基于以前的一篇文章,celery+Rabbit MQ的安装和使用, 本文更加详细的介绍如何安装和使用celey, Rabbit MQ. 并记录在使用celery时遇到的一些问题. 1.安装 Rabbi ...
- 友善RK3399/NanoPC-T4开发板wiringPi的C语言访问GPIO外设实例讲解 -【申嵌视频】
1 wiringPi简介 wiringPi库最早是由Gordon Henderson所编写并维护的一个用C语言写成的类库,除了GPIO库,还包括了I2C库.SPI库.UART库和软件PWM库等,由于w ...
- Browser Page Parsing Details
Browser Work: 1.输入网址. 2.浏览器查找域名的IP地址. 3. 浏览器给web服务器发送一个HTTP请求 4. 网站服务的永久重定向响应 5. 浏览器跟踪重定向地址 现在,浏 ...