【问题标题】:Getting back 'file: undefined' in dropzone.js success callback在 dropzone.js 成功回调中取回“文件:未定义”
【发布时间】:2015-12-15 09:12:48
【问题描述】:

我创建了一个 Angular.js 指令来向我的应用程序添加一个 dropzone 并将一个函数绑定到 dropzone.js 成功事件,但我只能得到响应,并且文件未定义。响应来自将文件上传到服务器的 API。文件怎么没有定义?

当我绑定到 dropzone.js addedfile 事件时,我可以访问该文件,但是它会弄乱 dropzone 流程,不显示缩略图。

我的 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);
}

我在这里忽略了一些基本的东西吗?

【问题讨论】:

  • 我尝试将文件发回这一行的方式有问题:scope.successCallback({response: response, file: file}) 或我如何定义回调函数 vm.dropzoneUploaded = function(response, file) {} 但我不知道是什么。
  • 这似乎相关:stackoverflow.com/questions/25296551/… 但是将返回值放入我已经应用的对象中的答案。

标签: angularjs dropzone.js angular-directive


【解决方案1】:

一位同事找到了答案:

在指令中,我不应该将返回变量包装在一个对象中: scope.successCallback(response, file);

现在它正在工作,我将两者都放回我的控制器中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 2019-09-02
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多