Javascript AngularJS ngMessages可以';t绑定到$index表达式

Javascript AngularJS ngMessages可以';t绑定到$index表达式,javascript,angularjs,forms,Javascript,Angularjs,Forms,我正在构建一个有角度的表单,它需要ngRepeat中的可重复表单元素 <form name="form"> <div ng-repeat="x in [1,2,3,4]"> <input name="something_{{$index}}" ng-model="hi" required> <div ng-messages="form.something_{{$index}}.$error"> <

我正在构建一个有角度的表单,它需要
ngRepeat
中的可重复表单元素

<form name="form">
    <div ng-repeat="x in [1,2,3,4]">
      <input name="something_{{$index}}" ng-model="hi" required>
      <div ng-messages="form.something_{{$index}}.$error">
        <ng-message="required">This is required</ng-message>
      </div>
    </div>
    <pre>{{form | json: 4}}</pre>
  </form>
您可以在
ngRepeat
中使用
{{$index}}
动态声明项。但这似乎不适用于
ngMessages
,当我试图将索引绑定到其中时,它会抛出一个错误

i、 e.这:

Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token at column 16 of the expression [form.something_{{$index}}.$error] starting at [{{$index}}.$error].
如果ng消息不能监视用其{{$index}声明的表单值,我们如何动态声明表单上要监视的属性

PLNKR:(检查控制台)


这是必需的

应该有用。我通常不会将{{}放在任何ng指令中,因为大多数ng指令的执行优先级为0(包括{}指令ngBind)。此外,ng指令在其参数上都使用$evaluate,因此默认情况下,它们查看范围中的变量值


同一元素上多个指令的优先级为0意味着Angular无法保证将首先应用哪个指令。因此,通常最好避免同时使用ngdirections,因为行为可能会有所不同。ngIf是一个例外,因为它以600优先级执行(这就是为什么无论发生什么情况,都不会为当前不在DOM中的ng if元素计算指令)。

您是否尝试过
ng messages=“form.something.$index.$error”
-只需删除
{}
,感谢您的响应。那太棒了!但它没有被正确地插值。最终结果html是
试试这个
谢谢你的帮助!不幸的是,结果是一样的!:-(
语法错误:标记“[”不是有效标识符
ngBind({{}}指令)以与ngMessages相同的优先级执行。这意味着在元素的ngBind之前可能会处理ngMessages(因此ngMessages执行代码仍将看到未转换的{{expr}})文本。非常感谢,但是它没有被正确插入。请在Plnkr中尝试。你是什么意思?在示例Plunkraded
ng maxlength
中一切都很好,因此很明显它不起作用:。正如你所看到的,
$index
不是插入的Hanks Deblaton。我想我的印象是$索引会被插入到HTML中,我会看到索引号。当我看到它并看到$index时,我认为它不起作用。现在我把我的头绕在它周围。非常感谢!Hi Tahsis,它在这里似乎不起作用:我有什么做错了吗?我相信它起作用了(它显示所需的消息)。
<div ng-messages="form.something_{{$index}}.$error">
Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token at column 16 of the expression [form.something_{{$index}}.$error] starting at [{{$index}}.$error].
    <div ng-repeat="x in [0,1,2,3]">
      <input name="something_{{$index}}" ng-model="hi" required>
      <div ng-messages="form['something_' + $index].$error">
        <ng-message="required">This is required</ng-message>
      </div>
    </div>
ng-messages="form['something_' + $index].$error"