2016-04-23 34 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]); 
    } 
}