2016-04-23 49 views
2

我有一個文本字段和文件字段一堆的形式。我使用Muller來接收文件,並且工作正常。我已經設法在請求中包含所有必要的數據,但我對我的解決方案並不滿意。有沒有更好的方法來追加表單的參數,而不是手動指定每個字段?如何簡化發送(文件,模型)與角度和FormData

$scope.createJob = function() { 
    var fd = new FormData(); 
    fd.append("logo", $scope.logo); 
    fd.append("title", $scope.formData.title); 
    fd.append("title", $scope.formData.description); 
    fd.append("title", $scope.formData.hiringOrganization); 
    fd.append("title", $scope.formData.jobLocation); 
    fd.append("title", $scope.formData.url); 
    $http.post('/api/v1/jobs', fd, { 
    transformRequest: angular.identity, 
    headers: {'Content-Type': undefined} 
    }) 
    .success(function(data) { 
    console.log(data); 
    }) 
    .error(function(data) { 
    console.log('Error: ' + data); 
    }); 
}; 

正如你所看到的,我附加了formData對象的每個參數。我試過

fd.append("body", $scope.formData);
但我最終得到了字符串「[Object object]」。

回答

1

你可以遍歷所有的FORMDATA對象,以縮短代碼:

var fd = new FormData(); 

for (var property in $scope.formData) { 
    if ($scope.formData.hasOwnProperty(property)) { 
     fd.append(property, $scope.formData[property]); 
    } 
}