AngularJS轉換請求內容

Darren Ji發表於2016-01-27

 

在"AngularJS中轉換響應內容"中,體驗瞭如何轉換響應內容。本篇來體驗如何轉換請求內容。

主頁面通過onSend方法把request物件轉遞出去。
 

<form name="form">
    <textarea ng-model="request.message" required></textarea>
    <input ng-model="request.tags">
</form>
<button ng-click="onSend($event, form.$valid)">傳送</button>

 

request物件和onSend方法被定義在了controller中。

 

angular.module('api.controllers')
    .controller('controllers.View',['$scope', 'services.Api', function($scope, api){
        $scope.request = {
            message: "",
            tags:""
        };
        
        $scope.onSend = function(event, valid){
            event.preventDefault();
            if(valid){
                api.send($scope.request).then(function(result){
                    $scope.request.message = "";
                    $scope.request.tags = "";
                })
            }
        }
    }]);

 

以上,控制器依賴了services.Api這個服務,該服務封裝了post請求。

 

angular.module('api.services').factory('services.Api',['$q', '$http', 'services.transformer.ApiRequest', function($q, $http, apiRequestTransformer){
    return {
        send: function(message){
            var deferred = $q.defer();
            $http({
                method: "POST",
                url: "",
                data: message,
                transformRequest: apiRequestTransformer
            }).success(function(data){
                deferred.resolve(data);
            });
            
            return deferred.promise;
        }
    }
}]);

 

$http服務中的transformRequest欄位就是用來轉換請求的。services.transformer.ApiRequest服務用來實施具體的轉換。

 

angular.module('api.transformers').factory('services.transformer.ApiRequest', function(){
    return function(data){
        return JSON.stringify(data);
    }
})

 

相關文章