Javascript TypeError:创建附件时在forEach处非法调用
试图创建关联模型的附件,但出现错误,不知道如何调试它 firefox称“forEach”调用的对象没有实现接口FormData chrome-TypeError:forEach at copy的非法调用== (forEach(目的地、功能(值、键) 返回副本(源、emptyObject、stackSource、stackDest); ) 使用angularjs rails资源创建附件 形式 模态控制器Javascript TypeError:创建附件时在forEach处非法调用,javascript,angularjs,coffeescript,paperclip,ng-file-upload,Javascript,Angularjs,Coffeescript,Paperclip,Ng File Upload,试图创建关联模型的附件,但出现错误,不知道如何调试它 firefox称“forEach”调用的对象没有实现接口FormData chrome-TypeError:forEach at copy的非法调用== (forEach(目的地、功能(值、键) 返回副本(源、emptyObject、stackSource、stackDest); ) 使用angularjs rails资源创建附件 形式 模态控制器 angular.module('modals').controller 'ModalCont
angular.module('modals').controller 'ModalController', [
'$scope', '$uibModalInstance', '$injector', 'resource', 'actionName',
($scope, $uibModalInstance, $injector, resource, actionName) ->
ctrl = this
resourceName = resource.constructor.config.name
$scope[_.lowCamelize(resourceName)] = resourceCopy = angular.copy(resource)
...
@create = ->
ctrl.$busy = true
# here is failure on create
resourceCopy.create().then((createdResource) ->
$uibModalInstance.close(createdResource)
).finally ->
ctrl.$busy = false
....
工厂
angular.module('railsResource').factory 'RailsResourceNotificatorMixin', [
'$rootScope', ($rootScope) ->
resourceName = (constructor) ->
_.lowCamelize(constructor.config.name)
class RailsResourceNotificatorMixin
@extended: (Resource) ->
...
Resource::create = ->
debugger
# super is Resource.__super__.create.apply(this, arguments).then(function(resource) {
# here is failure
super.then (resource) ->
$rootScope.$broadcast("#{resourceName(Resource)}-created", resource)
resource
事实证明,在angularjs rails资源中,gem angular.copy不希望复制带有附件的对象 暂时的解决办法是覆盖
data = angular.copy(this, {})
到
这不是RubyonRails的问题。
resourceCopy =
Object { fileName: "sample.pdf", fileSize: 8573, company: {…}, primaryRelation: "company", companyId: 121, name: "sdfsf", file: {"$upload": Object { "$$state": {…}, success: success(fn), state: "done-ok", … } id: "3243365014180998090"} }
{
"id": 201,
"ticketId": 133,
"creatorId": 63,
"importedFromMyCustomer": false,
"myCustomerCompanyid": null,
"myCustomerCaseId": null,
"myCustomerNoteSeqNbr": null,
"content": "Veniam asperiores officia numquam...",
"deletedAt": null,
"createdAt": "2020-10-20T16:54:18.000+03:00",
"updatedAt": "2020-10-23T10:24:59.000+03:00",
"updaterId": 1,
"isModified": true,
"attachments": [
{
"fileName": "sample.pdf",
"fileSize": 8573,
"file": {
"$upload": {
"$$state": {
"status": 1,
"value": {
"data": {
"id": "2810473018465773169"
},
"status": 201,
"config": {
"method": "POST",
"transformResponse": [
null
],
"url": "/uploads",
"file": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"X-Requested-With": "XMLHttpRequest",
"X-XSRF-TOKEN": "3fCWvLQU5rcMpc/kQJvKLsrTJeVtdV8bk2w2/lmynHEekEdBY+GqfPNUkanxBz1tE+AP4qgTGBEbr8UaAx/FOA=="
},
"data": {}
},
"statusText": "Created"
},
"processScheduled": false
},
"state": "done-ok",
"result": {
"$$state": {
"status": 1,
"value": {
"id": "2810473018465773169"
},
"processScheduled": false
}
},
"uploadedFile": {
"id": "2810473018465773169"
}
},
"id": "2810473018465773169"
}
},
{}
],
"creator": {
"id": 63,
"firstName": "Coralie",
"lastName": "Brekke",
"username": "user_pedro_62",
"email": "seymour.bergnaum@murazik.net",
"lastSignInAt": null,
"currentSignInAt": null,
"teamId": 22,
"name": "Coralie Brekke",
"avatarUrl": "/avatars/small/missing.png",
"teamName": "Prosacco Group 22",
"enabled": true,
"phone": null
},
"$editing": true
}
data = angular.copy(this, {})
data = JSON.parse(JSON.stringify(this))