2015-04-23 4 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-класса следующим образом, поэтому я думал, что он будет работать и для ng-if.

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

Попробуйте это:. 'Данных нг-если =" форма [ 'dateInput' + question.questionAnswerId] $ error.required && submit ". –

+0

@YauheniLeichanok Ваше предложение сработало, спасибо! Я видел этот другой вопрос, но он не предложил предложения, как я мог бы избежать использования интерполяции. Я не могу поверить, что не думал использовать другую нотацию для ссылки на свойство объекта JS. – Casey

+0

@YauheniLeichanok - Это сработало для меня; однако, я хотел бы понять, что происходит. Является ли это на самом деле массивом или делает Angular что-то особенное с []? – karns

ответ

3

Вам не нужно интерполяции, просто получить доступ к значению непосредственно как:

data-ng-if="form.dateInput[question.questionAnswerId].$error.required && submitted" 
Смежные вопросы