在 dropzone.js 成功回调中返回 'file: undefined'
Getting back 'file: undefined' in dropzone.js success callback
我做了一个 Angular.js 指令来为我的应用程序添加一个 dropzone 并将一个函数绑定到 dropzone.js 成功事件,但我只能得到响应,并且文件未定义。响应来自将文件上传到服务器的 API。为什么文件未定义?
当我绑定到 dropzone.js addedfile 事件时,我可以访问该文件,但随后它扰乱了拖放区流程,不显示缩略图。
我的 Angular 指令:
angular
.module('frontend')
.directive('dropZone', dropZoneDirective);
function dropZoneDirective(APPSETTINGS) {
return {
scope: {
successCallback: '&?'
},
link: function (scope, element, attrs) {
element.dropzone({
url: APPSETTINGS.apiUrl + 'api/core/media',
headers: {'x-wsse': API.getToken()},
paramName: 'file',
success: function(file, response) {
if (scope.successCallback != null) {
scope.successCallback({response: response, file: file});
}
}
});
}
}
}
在我的 HTML 视图中:
<div success-callback="vm.dropzoneUploaded()" class="dropzone" drop-zone></div>
以及控制器中的回调函数:
vm.dropzoneUploaded = function(response, file) {
var filename = file.filename;
var filepath = response.path;
var object = {
filename: filename,
filepath: filepath
};
var updated = DataFct.add(object);
}
我是不是忽略了一些基本的东西?
一位同事找到了答案:
在指令中我不应该将 return 变量包装在一个对象中:
scope.successCallback(response, file);
现在它可以正常工作了,我正在将两者都放回我的控制器中。
我做了一个 Angular.js 指令来为我的应用程序添加一个 dropzone 并将一个函数绑定到 dropzone.js 成功事件,但我只能得到响应,并且文件未定义。响应来自将文件上传到服务器的 API。为什么文件未定义?
当我绑定到 dropzone.js addedfile 事件时,我可以访问该文件,但随后它扰乱了拖放区流程,不显示缩略图。
我的 Angular 指令:
angular
.module('frontend')
.directive('dropZone', dropZoneDirective);
function dropZoneDirective(APPSETTINGS) {
return {
scope: {
successCallback: '&?'
},
link: function (scope, element, attrs) {
element.dropzone({
url: APPSETTINGS.apiUrl + 'api/core/media',
headers: {'x-wsse': API.getToken()},
paramName: 'file',
success: function(file, response) {
if (scope.successCallback != null) {
scope.successCallback({response: response, file: file});
}
}
});
}
}
}
在我的 HTML 视图中:
<div success-callback="vm.dropzoneUploaded()" class="dropzone" drop-zone></div>
以及控制器中的回调函数:
vm.dropzoneUploaded = function(response, file) {
var filename = file.filename;
var filepath = response.path;
var object = {
filename: filename,
filepath: filepath
};
var updated = DataFct.add(object);
}
我是不是忽略了一些基本的东西?
一位同事找到了答案:
在指令中我不应该将 return 变量包装在一个对象中:
scope.successCallback(response, file);
现在它可以正常工作了,我正在将两者都放回我的控制器中。