проверка angular js создает ошибку синтаксического анализа, когда имя тега формы является числовым

#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>