如何简化发送(文件,模型)的angular度和FormData

我有一大堆文本字段和一个文件字段的forms。 我使用Mulder来接收文件,而且工作正常。 我已经设法在请求中包含所有必要的数据,但是我对我的解决scheme不满意。 有没有更好的方式来附加窗体的参数,而不是手动指定每个字段?

$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); 

但是我结束了string“[Object object]”。

不! 这不是最好的方法。 您应该使用javascript对象,之后,您必须使用angular.toJson()方法将该对象转换为angular.toJson()文件。 之后,你可以发布json。

有关更多信息,请查看以下示例: http : //jsfiddle.net/aq6SY/并查看文档: https : //docs.angularjs.org/api/ng/function/angular.toJson

你可以遍历formData对象来缩短你的代码:

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