2015-04-23 34 views
1

我在前端使用AngularJS编写了一个应用程序,该应用程序使用指令动态创建表单元素,因此每个表单元素的名称未提前知道。ng-if内部的插值

我目前正在尝试为每个元素实现表单验证,但这需要插值来确定每个表单元素的名称。这里就是我试图做的:

<span class="error-msg" data-ng-if="form.dateInput{{ question.questionAnswerId }}.$error.required && submitted"> 
    Required 
</span> 

然而,这给了我以下错误:

Syntax Error: Token '{' is an unexpected token at column 15 of the expression [form.dateInput{{ question.questionAnswerId }}.$error.required && submitted] starting at [{{ question.questionAnswerId }}.$error.required && submitted]. 

因为这似乎并没有被允许,有另一种方式我可以显示,如果消息一个必需的表单元素还没有被回答?

我能够插入ng-class中每个表单元素的名称,如下所示,所以我认为它也适用于ng-if。

ng-class="{ 'has-error' : form.dateInput{{ question.questionAnswerId }}.$invalid && submitted }" 
+1

试试这个:'数据-NG-IF =“形式[ 'dateInput' + question.questionAnswerId] $ error.required &&提交“'。 –

+0

@YauheniLeichanok你的建议工作,谢谢!我确实看到了其他问题,但没有提供如何避免使用插值的建议。我不敢相信我不认为用其他符号来引用JS对象属性。 – Casey

+0

@YauheniLeichanok - 这对我很好,但是,我想了解发生了什么。它实际上是一个数组还是Angular在[]中做了一些特殊的事情? – karns

回答

3

你不需要插值,只需直接访问该值,如:

data-ng-if="form.dateInput[question.questionAnswerId].$error.required && submitted"