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