Angular 1.3 Директива доступа $invalid в шаблоне

У меня есть директива, которая проверяет условия 3 полей ввода в шаблоне директивы и использует $setValidity, чтобы отключить кнопку сохранения, И дает одному из полей цвет; В angular 1.2 это работает:

template: '<input type="text" size="8" ng-model="date.date" ng-change="checkDateInput();" ng-class="{\'ng-invalid\': $invalid}" ui-mask="9999-99-99" placeholder="yyyy-mm-dd">'

Теперь мы перешли на Angular 1.3, и вместо того, чтобы напрямую манипулировать $setValidity, я сделал $валидаторы (новое в 1.3).

Гораздо чище, но теперь добавлены перерывы в занятиях; когда я печатаю $error или $invalid в шаблоне директивы, они не существуют, а когда я использую их вне директивы, они дают правильное логическое значение.

Кто-нибудь знает, как получить доступ к свойствам ngModel в шаблоне самой директивы в 1.3?


person Ruud van der Linden    schedule 21.11.2014    source источник


Ответы (1)


вы неправильно добавляете класс:

ng-class="{\'ng-invalid\': $invalid}" ui-mask="9999-99-99" placeholder="yyyy-mm-dd">'

должно быть

ng-class="{'ng-invalid': $invalid}" ui-mask="9999-99-99" placeholder="yyyy-mm-dd">'

Также попробуйте указать имя формы перед $invalid, например

myFormName.$invalid
person Santiago Rebella    schedule 21.11.2014
comment
Поскольку это часть шаблона директивы, все это находится между кавычками, поэтому их нужно экранировать... ваша версия падает при создании директивы. - person Ruud van der Linden; 21.11.2014
comment
хорошо, но этот вылетит при оценке ng-класса, вы не можете передавать классы с тире, если без собственных кавычек - person Santiago Rebella; 21.11.2014
comment
Проблема в том, что я вообще не могу получить доступ к $invalid в свойстве шаблона директивы; если я наберу {{ $invalid }} в конце свойства шаблона, оно останется пустым. - person Ruud van der Linden; 21.11.2014