如何简化发送(文件,模型)的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]); } }