#angularjs #validation
#angularjs #проверка
Вопрос:
У меня есть динамически сгенерированная форма с числовым именем тега. например:
Код:
<div class="form-group" ng-repeat="x in siteSettings">
<label class="control-label col-md-3" for="field_{{x.iFieldId}}">{{x.vLabel}} <span ng-if="x.eRequired = 'y'" class="text-danger">*</span></label>
<div class="col-md-4" ng-if="x.vType == 'text' || x.vType == 'email' || x.vType == 'password'">
<input type="{{x.vType}}" value="{{x.vValue}}" class="form-control" ng-class="{{x.vClass}}" maxlength="25" name="{{x.iFieldId}}" id="field_{{x.iFieldId}}" ng-required="x.eRequired = 'y'" data-ng-model="x.vValue">
<span class="help-block">{{x.vHint}}</span>
</div>
<span ng-show="form_siteSettings.{{x.iFieldId }}.$dirty amp;amp; form_siteSettings.{{x.iFieldId}}.$error.required" class="help-block text-danger">{{x.vLabel}} is required</span>
</div>
Визуализированная Html-часть:
<div class="form-group ng-scope" ng-repeat="x in siteSettings">
<label class="control-label col-md-3 ng-binding" for="field_1">
Site Name <span ng-if="x.eRequired = 'y'" class="text-danger ng-scope">*</span>
</label>
<div class="col-md-4 ng-scope" ng-if="x.vType == 'text' || x.vType == 'email' || x.vType == 'password'">
<input type="text" value="Fantasy Lotto" class="form-control ng-pristine ng-untouched ng-valid ng-not-empty ng-valid-required ng-valid-maxlength" ng-class="" maxlength="25" name="1" id="field_1" ng-required="x.eRequired = 'y'" data-ng-model="x.vValue" required="required">
<span class="help-block ng-binding">Site name which you want to display</span>
</div>
<span ng-show="form_siteSettings.1.$dirty amp;amp;amp;amp; form_siteSettings.1.$error.required" class="help-block text-danger ng-binding">Site Name is required</span>
</div>
Ошибка: $parse:синтаксис
Синтаксическая ошибка
Syntax Error: Token '.1.' is an unexpected token at column 18 of the expression [form_siteSettings.1] starting at [{4}].
Это можно решить, добавив префикс field_{{x.iFieldId}}, поскольку имя переменной с числовым значением не поддерживается, но есть ли какой-либо способ реализовать то же самое, используя числовое значение?
Комментарии:
1. имя переменной не поддерживает число
2. используйте как «form_siteSettings[1].$dirty amp;amp; form_siteSettings[1].$error.required»
3. я знаю, но есть ли какой-нибудь способ, добавив фильтр или что-то в этом роде
Ответ №1:
В качестве проблемы с числовой переменной проблема была решена путем замены следующего html
<span ng-show="form_siteSettings.{{x.iFieldId }}.$dirty amp;amp; form_siteSettings.{{x.iFieldId}}.$error.required" class="help-block text-danger">
{{x.vLabel}} is required
</span>
Для
<span ng-show="form_siteSettings[x.iFieldId].$dirty amp;amp; form_siteSettings[x.iFieldId].$error.required" class="help-block text-danger">
{{x.vLabel}} is required
</span>