2013-09-20 4 views
1

Я борюсь с валидацией в угловой директиве без успеха.Проблемы с угловой валидацией в директиве

Объект error.name. $ Error кажется неопределенным, когда я передаю свойство name шаблону директивы. Если я использую фиксированный атрибут имени внутри шаблона, объект $ error является точным, но, конечно, одинаковым для всех элементов.

HTML, является:

<form name="form" novalidate> 

<p> 
    <testvalidation2 name="field1" form="form" field="testfield4" required="true"> 
    </testvalidation2> 
</p> 
</form> 

Директива выглядит следующим образом:

app.directive('testvalidation2', function(){ 
return { 
restrict: 'E', 
scope: { 
    ngModel: '=', 
    newfield: '=field', 
    required: '=required', 
    form: '=' 
}, 
templateUrl: 'template2.html', 
link: function(scope, element, attr){ 
scope.pattern = /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/; 
scope.name = attr.name; 
} 

} // возвращает }); `

и, наконец, шаблон:

<div> 
<input name="{{name}}" type="text" ng-model="newfield" ng-required="required" ng-pattern="pattern"> {{FIELD}}</input> 
<span ng-show="form.name.$error.required">Required</span> 
<span ng-show="form.name.$error.pattern"> Invalid </span> 
<p>Output {{form.name.$error | json}}</p> 
</div> 

Я создал плункер для своего Angular Validation Problem и был бы счастлив, если бы кто-то помог мне выиграть бой.

Майкл

+0

У меня такая же проблема. Вы нашли какое-нибудь обходное решение? – BiAiB

ответ

1

Я не починку для этого, но я могу вам сказать, что эта проблема.

  • Во-первых, в вашем HTML form="form" должен иметь имя формы form="form2".
  • Во-вторых. Поскольку вы создаете новую область действия в директиве, созданная область представляет собой изолированную область, которая не наследуется от родителя, а это означает, что элемент управления шаблона input, который вы добавите, не будет добавлен в родительскую область form2.

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

+0

Спасибо за быстрый ответ. Спасибо за указание на несоответствие формы/формы2. Это не устранило проблему. Я думаю, что это связано с областью, но другие атрибуты, как и требовалось, ngModel передаются в область действия директивы. Похоже, что атрибут name недоступен для объекта $ error-object. –

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