2016-04-26 2 views
-1

Вот метод моего углового регулятора:Как сделать обратный вызов с заводом

  $scope.callJersey = function(shows) { 
      var selectedShows = []; 
      var show; 
      for (show in shows) { 
       var temp = {}; 
       temp.name = show; 
       temp.properties = shows[show].selectedShow; 
       selectedShows.push(temp); 
      } 
      addShowsFactory.save(selectedShows); 
     } 

Моей фабрика:

services.factory('addShowsFactory', function ($resource) { 
    return $resource('/easyshow/api/shows/add', {}, { 
     save: { 
      method: 'POST', 
      isArray: true 
     } 
    }) 
}); 

Как я могу сделать обратный вызов, когда метод сохранения сделал свою работу? Я попробовал несколько способов отобразить предупреждение (позже будет перенаправление), но ничего не получилось.

+0

Почему вы не возвращаете '$ http', если его почтовый вызов, а затем, когда возвращается« обещание », вы можете перенаправить –

+0

. Я начинаю с углового. После некоторых исследований я сделал это, и он работал, поэтому я не касался его с тех пор. – Skulker

ответ

0

Позвольте мне доказательство $promise с некоторым тестового кода

angular 
 
    .module('shows', ['ngResource']) 
 
    .factory('addShowsFactory', function($resource) { 
 
    return $resource('/easyshow/api/shows/add', {}, { 
 
     save: { 
 
     method: 'POST', 
 
     isArray: true 
 
     } 
 
    }) 
 
    }); 
 

 
describe("Shows", function() { 
 
    beforeEach(module("shows")); 
 

 
    it("adds shows", inject(function(addShowsFactory, $httpBackend) { 
 
    var stubMovies = [{name: 'some name'}, {name: 'some other name'}]; 
 
    
 
    $httpBackend.expectPOST("/easyshow/api/shows/add").respond(201, stubMovies); 
 
    
 
    addShowsFactory.save().$promise.then(function(shows) { 
 
     expect(shows[0].name).toBe(stubMovies[0].name) 
 
    }) 
 
    
 
    $httpBackend.flush(); 
 
    })); 
 
});
<link href="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine.css" rel="stylesheet" /> 
 
<script src="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine-2.0.3-concated.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-resource.min.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-mocks.js"></script>

addShowsFactory.save возвратного обещание, вы можете получить доступ к его $promise собственности, то вы можете вызвать метод then на него.

AngularJS documentation and exemple for $promise

+0

Thx, это что-то в этом роде. Но у меня есть ошибка => не могу прочитать свойство, а затем неопределенное. У меня были все зависимости – Skulker

+0

@Skulker, что 'console.log (addShowsFactory.save (selectedShows))' возвращает? –

+0

это возвращение []. Пустой массив. Тогда у меня есть другой журнал. запрос не удался 500. [] angular.min.js: 99 POST http: // localhost: 8080/easyshow/api/показывает/добавить 500 (запрос не выполнен.) Но я вижу данные, поступающие в мою часть Java. и объекты создаются в моей базе данных. – Skulker

0

Afters некоторые тесты, это рабочий раствор:

   $http.post('/easyshow/api/shows/add', selectedShows).then(
        function(data){ 
         alert("Yes"); 
        }, function(data){ 
         alert("No"); 
        }); 

Но из кода состояния 500 всегда возвращается, только функция ошибки называется. никогда не сдавайся !!

Смежные вопросы