2015-11-29 6 views
0

Я создаю многочастную форму, в которой несколько указаний содержат несколько входов. директивы находятся внутри формы, имя которой я передаю в качестве атрибута для выделенных областей. с ним я передаю объект с именами ввода для проверки с помощью ng-сообщений. теперь эта форма огромна, поэтому я напишу только небольшой пример здесь,угловая директива комплексная форма проверки данных

проблема - вход получает имя, которое я хотел, но я не могу получить доступ к свойству имени формы для ng-сообщений ...

here is my main form: (it has a couple of these directives in it...) 
    <form name="flightsForm" ng-show="formStagesArr[1]" novalidate> 

    <flight-form 
     ng-model="formObject.flight.outboundSec" 
     form-name="flightsForm" 
     validation-names="outSecValidation" 
     > 
    </flight-form> 

</form> 

здесь является основной сферой, где я создал объект outSecValidation:

$scope.outValidation = { 
     "dateName":'outDate' 
} 

вот мой полет форма директивы возвращаемые ПДИ:

return { 
      restrict: 'EA' , 
      controller: 'flightFormCtrl' , 
      require : 'ngModel', 
      scope: { 
       ngModel: '=', 
       formName: '=', 
       validationNames: '=' 
      }, 
      link: function(scope , elem , attrs){ 
      }, 
      templateUrl:templateUrl 
    } 

и вот мой шаблон:

<md-contect> 
     <md-datepicker 
      name="{{validationNames.dateName}}" 
      ng-model="ngModel.date" 
      md-placeholder="{{ngModel.ArrOrDep}}" 
      required> 
     </md-datepicker> 
    </md-contect> 

    <div class="validation-messages" 
    ng-messages="formName.{{validationNames.dateName}}.$error"> 
    <div ng-message="required">field required</div> 
    </div> 

этот код получает «Синтаксическая ошибка: Знак„{“не является допустимым идентификатором» ошибка. , но если я не могу использовать двустороннюю привязку данных внутри ng-сообщений, как я могу проверить поле по его имени? becuase это выражение "formName.validationNames.dateName. $ Error", очевидно, не определено правильно?

любые идеи?
если что я делаю, это серьезно неправильно, и вы можете предложить лучший способ, пожалуйста, не стесняйтесь .. спасибо!

ответ

0

Вы можете выполнить только то, что хотите.

<div class="validation-messages" ng-messages="formName[validationNames.dateName].$error"> 

Однако вам действительно нужно передать validationNames в директиву? Не должно быть проще просто передать имя ввода? Я не вижу никакого использования в шаблоне такого объекта. Кроме того, это немного запутанно, потому что похоже, что ваш шаблон обрабатывает только один тип ввода, который является «dateName». В любом случае, я надеюсь, что я ответил на вашу проблему.

+0

спасибо, что это сработало ... да, я знаю, что это выглядит излишним из этого примера, но каждая директива содержит 20 -30 входов, а затем я использовал 4 раза вокруг формы ... поэтому мне пришлось создать способ для проверки правильности динамически. – nadavmor123

Смежные вопросы