Я использую angular xeditable для своего проекта.
Я использую угловой компонент постоянной строки для моей сетки.
Как я знаю
Если я использую
return $http.post('api/students',model).sucess(function(data) {
})
.error(function(data) {
}) ;
Насколько я знаю, что происходит - приведенный выше код вызовет веб-API метода публикации студентов КОНТРОЛЛЕР ... если он вернет ОК, будет выполнено успешное выполнение n возвращается, иначе будет выполнена ошибка n возвращается ......
Но мой вопрос - могу ли я вызвать вызов .error из самого javascript ....
Скажем так
if( textbox == "")
return $http.post().error().......
else
return $http.post().sucess()....
Почему я хочу что-то подобное ???
Потому что для одного текстового поля мне нужно совершить поездку на сервер, чтобы проверить, пусто оно или нет. если он не пустой, я верну OK (), иначе я верну (скажем) NotFound () ...
OK выполнит успешный вызов NotFound выполнит вызов ошибки ...
Так что на стороне js, если я проверю, пуста ли строка или нет.
если пусто принудительно (без отключения сервера), я хочу вернуть обратный вызов .error ....
Является ли это возможным????????????
$ http.post выполнит отключение сервера. я знаю это. но что на стороне клиента, если я хочу принудительно вернуть обещание об ошибке?
2 ответа
Вы можете использовать библиотеку $q
, чтобы отклонить обещание.
Чтобы вернуть сообщение об ошибке:
angular.module(....)
.service('myService', ['$q', '$http', ....,
function($q, $http, ....) {
...
this.myFunction = function(data) {
if (isValid(data)) {
return $http.post(....);
} else {
return $q.reject("rejection message");
}
};
...
}]);
Если вы не хотите делать HTTP-запрос без действительного ввода, просто проверьте ввод, прежде чем что-либо делать. Вот так:
if(<valid input>) {
return $http.post('api/students',model)
.success(function(data) {
})
.error(function(data) {
}) ;
} else {
// don't do request
}
Похожие вопросы
Новые вопросы
angularjs
Используйте для вопросов об AngularJS (1.x), JavaScript-фреймворке с открытым исходным кодом. НЕ используйте этот тег для Angular 2 или более поздних версий; вместо этого используйте тег [angular].