2016-05-05 18 views
0

Я звоню в httpService для публикации данных и хочу отобразить сообщение, например, если произошла ошибка.Возвращение сообщения об успешном завершении с httpost в Angularjs

(function() { 
'use strict'; 

angular.module("adminSetup").controller("AccountController", ["$scope", "$location", "httpService", AccountController]); 

function AccountController($scope, $location, httpService) { 
    $scope.message = ""; 
    $scope.error = false; 
    $scope.user = { 
     username: '', 
     password: '', 
     firstname: '', 
     lastname: '', 
     email: '', 
     city: '' 
    } 
    $scope.submitUser = function() { 
     httpService.registerUser($scope.user, 
      function (data) { 
       $scope.message = data; 
      }, 
      function (error) 
      { 
       $scope.message = error; 
      });; 
    } 
} 
})(); 

Служба выглядит следующим образом

(function() { 
"use strict" 
angular.module("common.services").factory("httpService", ["$q", "$http", "appSettings", userAccountHttp]) 


function userAccountHttp($q, $http, appSettings) { 
    var deferred = $q.defer(); 
    var registerUser = function (user) { 
     $http({ 
      url: appSettings.serverPath + "Account/Register/", 
      method: "POST", 
      data: user 
     }).then(function (data) { 
      return deferred.resolve("Success"); 
     }, 
     function (response) { 
      return deferred.reject(response.data.exceptionMessage); 
     }) 
    } 
    return { 
     registerUser: registerUser 
    }; 
} 

})();

Как и в настоящий момент, сообщение службы Http не возвращается службой AccountController. Как я могу вернуть статус Контроллеру

ответ

1

Вам не нужно строить обещание по обещанию. просто сделать это:

(function() { 
"use strict" 
angular.module("common.services").factory("httpService", ["$http", "appSettings", userAccountHttp]) 


function userAccountHttp($http, appSettings) { 
    var registerUser = function (user) { 
     return $http({ 
      url: appSettings.serverPath + "Account/Register/", 
      method: "POST", 
      data: user 
     }); 
    } 
    return { 
     registerUser: registerUser 
    }; 
}); 
1

Я думаю, что проблема здесь вы не возвращенная обещание вы также можете взглянуть на this

(function() { 
    "use strict" 
    angular.module("common.services").factory("httpService", ["$q", "$http", "appSettings", userAccountHttp]) 


    function userAccountHttp($q, $http, appSettings) { 
     var deferred = $q.defer(); 
     var registerUser = function (user) { 
      $http({ 
       url: appSettings.serverPath + "Account/Register/", 
       method: "POST", 
       data: user 
      }).then(function (data) { 
       deferred.resolve("Success"); 
      }, 
       function (response) { 
        deferred.reject(response.data.exceptionMessage); 
       }) 

      return deferred.promise; 
     } 
     return { 
      registerUser: registerUser 
     }; 
    } 
})(); 
+1

'$ http' уже возвращает обещание, нет необходимости '$ q'. – Kyle

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