Я использую 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 выполнит отключение сервера. я знаю это. но что на стороне клиента, если я хочу принудительно вернуть обещание об ошибке?

0
micronyks 16 Дек 2014 в 22:27
Почему бы просто не абстрагировать обработчик ошибок за именованной функцией, которую вы можете вызывать напрямую, вместо того, чтобы иметь дело с $http, когда вы не хотите делать HTTP-запрос?
 – 
Kevin B
16 Дек 2014 в 22:29

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");
          }

        };
        ...
     }]);
0
Pete 16 Дек 2014 в 22:53

Если вы не хотите делать HTTP-запрос без действительного ввода, просто проверьте ввод, прежде чем что-либо делать. Вот так:

if(<valid input>) {
  return  $http.post('api/students',model)
  .success(function(data) {

  })
  .error(function(data) {

  }) ;
} else {
  // don't do request
}
0
Thuzad 16 Дек 2014 в 22:46