2016-05-05 11 views
0

データを投稿するためにhttpServiceを呼び出しています。たとえば、エラーが発生した場合などにメッセージを表示したいとします。httpstを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 Statusメッセージは、サービスによって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

を私はここでの問題はあなたがまた `$ http`がすでに約束、の必要はありませんが返されます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

を見てみることができます約束を返していないと思い'$ q'。 – Kyle

関連する問題