AngularJs:如何对指令创建的动态元素应用Form验证
AngularJs: how to apply Form validation on dynamic element created by directive
在我们的表单中,元素是使用ng repeat动态创建的。将表单值存储在$scope.answers.[attribute name]中。
以同样的方式,我想在表单提交时对更改进行验证。但无法调用对动态元素的验证。
我的html元素(index.html)
<div ng-if="que.QuestionData._fieldType === 'text'" >
<text-control-dir data-que-obj="que.QuestionData" ></text-control-dir>
{{answers[que.QuestionData._attributeName]}}
<span ng-show="DTOstep1.answers[que.QuestionData._attributeName].$touched && DTOstep1.answers[que.QuestionData._attributeName].$invalid">The name is required.</span>
</div>
(controlDirective.js)指令具有用于表单控件的html。有关完整代码,请参阅此plunker。https://plnkr.co/edit/GA74YHNFxFb0ARg16Sjj?p=preview
首先需要使用ngModel
https://docs.angularjs.org/api/ng/directive/ngModel.否则,它不会在您的表单中注册任何验证错误。此外,您不需要elemen.on('change')
,只需使用ngModel
指令。最后,如果您使用自己的验证消息,请将novalidate
属性添加到表单元素中。
ngModel负责:
将视图绑定到模型中,text区域或选择require。
提供验证行为(即。必填,数字,电子邮件,网址)。
保持控件的状态(有效/无效、脏/原始、触摸/未触摸、验证错误)。
在元素上设置相关的css类(ng valid,ng肮脏,ng质朴,ng感动,ng未动,ng空虚,ng不为空),包括动画。
将控件注册到父窗体.
顺便说一句,前缀为ng-
的指令不需要{{ }}
。例如,你不应该写
required="{{queObj._required}}"
但required="queObj._required"
这是一个用于文本控制目录的工作plunker
https://plnkr.co/edit/wDPtvj29pt0E6Y7QC0j0?p=preview
- 将列表元素动态添加到ul元素中
- 将输入 html 元素动态关联到颜色选取器
- 媒体元素 - 动态加载音频
- 根据其内部元素动态更改 CSS
- 编写脚本以向元素动态添加.current(类似活动类)的场景
- 使用knockoutjs虚拟元素动态创建html部分
- 将JS中的元素动态添加到XUL中
- 如何从jquery中获得元素动态附加的完整表
- 使用jquery向li元素动态添加类
- 点击事件不't在尝试将元素动态添加到<ul>标签
- 使用Knockout.js Issue将元素动态添加到嵌套列表中
- 如何从DOM元素动态禁用popover
- 将样式元素动态插入DOM的最后一种跨浏览器方式
- 无法将元素动态添加到数组中
- 指令如何等待元素'动态插值属性被处理?
- 设置活动元素和非活动元素(动态)
- 是否可以使用JS/PHP为网页中的元素动态分配ID
- 如何制造<光>元素动态调整以填充浏览器窗口的整个宽度
- 基于页面元素动态构建菜单结构
- 向现有元素动态添加删除绑定