v-if案例解析(element-ui form-item表单无法验证问题剖析 )

fire

读在最前面:

  1、此文章衔接Vue 虚拟Dom 及 部分生命周期初探,相关整体知识点请先阅读后再继续本文阅读

问:当v-if为true时,会重新渲染相关dom节点吗?

<child v-if="true"></child>

点击查看涉案代码

点击图中【切换】字样 查看效果,如下图:

流程分析:

1、首先我们按代码画出初始化vnode和点击切换后的vnode,进行第一次 对比,如下图

说明:头头比较的时候,节点没有任何变化,所以直接不动即可,如果a的相关属性有变动,则直接更新即可

2、第一次循环结束后,我们a和a已经处理过了,所以下次不再进行处理,第二次对比开始,如下图

说明:第二轮结束的时候已经遍历完成2组节点配对

3、第三次对比开始,如下图

说明:到这里,已经看到了为什么有v-if 为 ture,但节点还是重新渲染了,其他节点类推

回到element-ui form-item 无法验证问题也是同理

组件节点被复用了,所以验证也就自然失效了

备注:  

  1、virtual-dom-diff 会有dom节点复用问题,针对有状态依赖关系的尽量加key作为区分,这样能避免不相关节点因为没有key而出现异常

  2、在存在大量标签的情况下,尽量不要加深dom层级,块级v-if可以用template包裹,这样可以避免不必要的错误(没加key)dom节点复用了问题

by:海豚湾-丰

  

原文地址:https://www.cnblogs.com/teamblog/p/9566415.html

时间: 2024-10-10 22:16:23

v-if案例解析(element-ui form-item表单无法验证问题剖析 )的相关文章

element ui 库中 表单部分 一个很容易忽略的坑!

如果在使用element-ui1.4.* 版本中的表单时,发现某些字段绑定不了值,或者checkbox在你绑定后一点就全选了或者全部选,又或者表单验证时候有些字段没动静,那么十有八九是: 1.el-form 标签绑定data中的form时候,请使用:model="form" 而不是v-model="form". 2.请给el-form-item 标签中加上prop属性. 一些很简单的问题,也是自己踩过的坑,希望能帮到大家.

vue 使用 element ui动态添加表单

html部分 <div class="hello"> <el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic"> <el-form-item prop="email" label="邮箱"

解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象

原文:解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象 之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的form,还有其他一些form插件也是一样的,使用不当就会遇到这个问题. 前台: <!DOCTYPE html> <html> <head> <meta http-equiv=

Struts2中UI标签之表单标签介绍

1.在Struts2中UI标签的表单标签分为两种:form标签本身和单个表单标签. 2.Struts2表单标签包括:form.textfield.password.radio.checkbox.checkboxlist.select.doubleselect.combobox.optiontransferselect.optgroup.updownselect.textarea.hidden.file.label.submit.token.head.datepicker.reset.richte

[ jquery 表单UI选择器和表单元素属性选择器 ] 表单UI选择器和表单元素属性选择器

表单UI选择器和表单元素属性选择器: 实例: <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='keyword1,keyword2,keywo

Form Presonalization 表单个性化定义控制应用

1.1.1   表单个性化定义 Oracle EBS 11.5.10所增加的Form Presonalization功能,是在对Form不进行开发的前提下,用一些系统内置的触发器,按照所设定的控制规则及条件逻辑,改变Form的标准功能,从而实现对部分功能个性化控制的目的. 如下是使用"Form Presonaliza"应用的系统功能案例,在本文内只做参考,供浏览者拓展业务需求解决方案所需. 具体内容可参见ST.SUN编制的系列文档 Oracle ERP知识学习总结(一): <Fo

Struts2中UI标签之表单标签的一个例子

1.最近写了一篇文章,介绍了一下Struts2中UI标签的表单标签,文章地址为:http://blog.csdn.net/u012561176/article/details/44986183  因为缺少了个例子,大家看文字和表格也看不出什么效果来,所以今天来介绍一个例子,用Struts2中UI标签的表单标签实现一个个人信息的表单,但是有些表单标签没有演示出来,大家可以根据我介绍UI标签的表单标签来进行学习,这里只是给个例子. 2.首先新建一个Struts2项目,项目名为PersonMess

[转]AngularJS 使用 UI Router 实现表单向导

本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的UI Router以及Angular ngAnimate module创建一个带动画的多步表单.这项技术可以用在你想要简化用户操作的大表单上. 我们看到这项技术已经应用在了许多的网页上.比如购物车,注册表单,入职流程以及许多多步表单,让用户更容易在线填写表单. 下面我们将构建它: 使用UI Rout

form提交表单

菜鸟的第一篇文章,今天在工作中遇到一个问题.下面来说说,也许很多大神都知道了,但作为菜鸟还是想说说. 对于table表格里面的数据,如下: [html] view plain copy print? <pre name="code" class="html">  <table> <tr> <td>ID</td> <td>姓名</td> <td>年龄</td>