コントローラーからのエラー メッセージの取得、コンパイル、および表示を担当するグローバル ディレクティブがあります。
などのサーバー検証エラーが発生した場合は、
This email already exists
この要素に注目して有効性を false に設定します$setValidity(false)
。
このディレクティブはフォームではなく、フォームが含まれていません。
何を提案しますか(コメントアウトされているものはすべて試しました)
directive('messageCompile', function ( $compile, $window, $rootScope ) {
return {
restrict: 'A',
scope: true,
link: function ( scope, element, attrs ) {
var el;
attrs.$observe( 'template', function ( tpl ) {
if ( angular.isDefined( tpl ) ) {
// compile the provided template against the current scope
el = $compile( tpl )( scope );
// stupid way of emptying the element
element.html("");
// add the template content
element.append( el );
}
});
attrs.$observe('focus', function(val){
if ( angular.isDefined( val ) && Boolean(val)) {
var el = angular.element('[name="' + attrs.focus + '"]');
var form = el.parents().find('form');
var formName = form.attr('name');
el.focus();
// scope[formName].$setValidity(val, false);
// el.scope().$setValidity(false);
// scope[formName][val].$setValidity(false);
//$rootScope.scope[formName][val].$setValidity(false);
//$rootScope.scope[formName].$setValidity(val, false);
}
});
var windowEl = angular.element($window);
windowEl.on('scroll', function() {
if(window.scrollY > 46){
element.parent().parent().addClass('stayTop');
// alert('here');
}
else{
// alert('here2');
element.parent().parent().removeClass('stayTop');
}
});
},
}
}).