Javascript 动态模型和角度测量中的ng重复脏度检查

Javascript 动态模型和角度测量中的ng重复脏度检查,javascript,angularjs,Javascript,Angularjs,我在做一些我认为相对直接的事情,但角度对我来说并不正确。我很确定这是可以做到的,我想我只是错过了一些东西 本质上,我已经在Angular中创建了一个表单服务,在这里我可以定义一个对象数组,用于动态创建表单。这方面的一个例子如下: email: [ { name: 'email', type: text, required: true } ] 这可能表示有人会在其中输入电子邮件的表单。我想做的是在上面运行一个ng repeat,并添

我在做一些我认为相对直接的事情,但角度对我来说并不正确。我很确定这是可以做到的,我想我只是错过了一些东西

本质上,我已经在Angular中创建了一个表单服务,在这里我可以定义一个对象数组,用于动态创建表单。这方面的一个例子如下:

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>