Я хочу показать сообщение об ошибке для недопустимых учетных данных при каждом попытке входа в систему через несоответствующую комбинацию имени пользователя и пароля (через запрос на сервер, который возвращает статус недействительным данные входа в этом случае). Я создал директиву для того же:Директива AngularJS условно основана на переменной контроллера
app.directive('invalid', function ($compile) {
return {
scope: true,
restrict: 'A',
link: function link(scope, element) {
element.bind('submit', function(){
var text = '<div class="uk-alert uk-alert-danger" ng-if="invalidCredentials"><p>Invalid username or password</p></div>';
el = $compile(text)(scope);
element.append(el);
});
}
}
});
(обратите внимание на ng-if
на приложенном элемент)
я применил эту директиву form
элемента следующим образом:
<form invalid name="loginForm" ng-submit="loginUser(loginDetails);" novalidate>
Всякий раз, когда учетные данные пользователя недействительны (проверяется через запрос, сделанный на сервер), переменная $scope.invalidCredentials
установлена в true
(внутри глобального контроллера).
Он работает нормально, за исключением того факта, что директива запускается каждый раз при отправке формы. [Независимо от значения $scope.invalidCredentials
]. ng-if
, похоже, не работает.
Пожалуйста, помогите. Заранее спасибо
Эта директива кажется излишней. Почему бы не создать скрытый div и отображение, которое соответствует переменной '$ scope.invalidCredentials'? –