Javascript 动态模型和角度测量中的ng重复脏度检查
我在做一些我认为相对直接的事情,但角度对我来说并不正确。我很确定这是可以做到的,我想我只是错过了一些东西 本质上,我已经在Angular中创建了一个表单服务,在这里我可以定义一个对象数组,用于动态创建表单。这方面的一个例子如下:Javascript 动态模型和角度测量中的ng重复脏度检查,javascript,angularjs,Javascript,Angularjs,我在做一些我认为相对直接的事情,但角度对我来说并不正确。我很确定这是可以做到的,我想我只是错过了一些东西 本质上,我已经在Angular中创建了一个表单服务,在这里我可以定义一个对象数组,用于动态创建表单。这方面的一个例子如下: email: [ { name: 'email', type: text, required: true } ] 这可能表示有人会在其中输入电子邮件的表单。我想做的是在上面运行一个ng repeat,并添
email: [
{
name: 'email',
type: text,
required: true
}
]
这可能表示有人会在其中输入电子邮件的表单。我想做的是在上面运行一个ng repeat
,并添加一些角度脏检查,如下所示:
<form name="form">
<span ng-repeat="fields in formFields">
<input name="{{field.name}}
ng-model="user[field.name]" />
<div ng-show="form.{{field.name}}.$dirty">Input is dirty</div>
</span>
</form>
您可以添加
来处理此问题
它将使用多个输入元素,但请参见最后的注释
以下是显示此解决方案的更新提琴:
肮脏的
{{field[email.name]}
它很脏!
请注意,您将得到一个来自form.myForm
的myForm
实例-如果您需要访问来自form
的单个myForm
实例,则需要使用自定义指令来处理此问题(请参阅我对您的问题的评论).文档页面中的六个示例中,哪一个是?@cheekybuster绑定到表单和控件状态的部分是我要查看的。请看一下我以前在Angular中访问动态表单元素的答案:基本上,您不能使用插值来命名动态输入元素-您需要创建一个指令来解决这个问题。这是对我之前评论的更新-它引用了Angular 1.2。在Angular 1.3+中,您可以使用{{interpolation}}动态命名输入。您是一个漂亮的人,是您。快速提问:通过ng show
我是否能够访问单个输入,或者您所指的关于生成指令的情况是这样的?不管怎样,它似乎只知道输入是什么,并为每个输入执行它。
<div ng-controller="MyCtrl">
<form name="form">
<input name='myInput' ng-model='model.myInput'>
<div ng-show='form.myInput.$dirty'>Dirty</div>
<!-- 1. Add `ng-form="myForm"` directive. -->
<span ng-form="myForm"
ng-repeat='field in email'>
<input ng-model="field[email.name]" name={{email.name}} />
{{field[email.name]}}
<!-- 2. Reference the named parent -> `myForm.$dirty` -->
<div ng-show="myForm.$dirty">It's dirty!</div>
</span>
</form>
</div>