AngularJS转换请求内容

 

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

 

posted @ 2016-01-27 11:31  Darren Ji  阅读(2722)  评论(0编辑  收藏  举报

我的公众号:新语新世界,欢迎关注。