Это простая форма, которая содержит одно поле ввода с директивой. Если ввод действителен, директива вызовет удаленный сервер. Ответ заполнит модель формы некоторыми дополнительными данными.
Как дождаться выполнения обещания при отправке формы?
Вот пример кода, если это поможет:
app.directive('getSecretStuff', function($q, $http) {
function get_some_secret_stuff( value ) {
var deferred = $q.defer();
$http.get(url)
.success(function (response) {
deferred.resolve(response.secret_stuff);
});
return deferred.promise;
};
return {
restrict: 'A',
require: '^form',
scope: {
secret_stuff: '=stuff',
},
link: function(scope, element, attrs, ctrl) {
scope.$watch(
function() { return ctrl[ element.attr('name') ].$valid; },
function (validity) {
if (validity) {
get_some_secret_stuff( element.val() ).then(function( stuff ) {
scope.secret_stuff = stuff;
});
}
}
);
},
};
});