Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs DropzoneJs成功和错误回调_Angularjs_Callback_Dropzone.js - Fatal编程技术网

Angularjs DropzoneJs成功和错误回调

Angularjs DropzoneJs成功和错误回调,angularjs,callback,dropzone.js,Angularjs,Callback,Dropzone.js,我正在构建一个AngularJs应用程序,我正在使用DropzoneJs中的dropzone。我需要使用成功和错误回调,因为我必须访问服务器响应。我遇到一个问题,如果我使用回调,previewTemplate会更改。。。那么,我可以在回调中更改previewTemplate吗 如果我不使用回调,以下是结果模板和代码: var myDropzone = $("#storageDropzone").dropzone({ url: firstUrl, }); 如果我使用

我正在构建一个AngularJs应用程序,我正在使用DropzoneJs中的dropzone。我需要使用成功和错误回调,因为我必须访问服务器响应。我遇到一个问题,如果我使用回调,previewTemplate会更改。。。那么,我可以在回调中更改previewTemplate吗

如果我不使用回调,以下是结果模板和代码:

var myDropzone = $("#storageDropzone").dropzone({
    url: firstUrl,        
}); 


如果我使用回调,则不会显示“勾号”或“叉号”:

var myDropzone = $("#storageDropzone").dropzone({
    url: firstUrl,
    error: function (file, response) {
        console.log("Erro");
        console.log(response);
    },
    success: function (file, response) {
        console.log("Sucesso");
        console.log(response);
    },
    complete: function (file) {
        console.log("Complete");
    }
}); 


那么,我可以在回调中更改previewTemplate吗?或者简单地说,保留现有的一个?

因此,这就是我找到的解决方法

我没有使用回调,而是对init函数进行了更改。虽然这个答案不能让我满意,但这是我目前能做的最好的。。。如果有人能解释为什么它在init上工作,而不是作为回调,请随意回答

这就是解决方案:

var myDropzone = $("#storageDropzone").dropzone({
    init: function () {
        this.on("processing", function (file) {
            $scope.$apply($scope.working = true);
            this.options.url = lastUrl;
            $scope.$apply($scope.processing = true);
        });

        this.on("success", function (file, response) {
            console.log("sucesso");
            var ficheiro = { nome: file.name, link: response[0] };
            $scope.$apply($scope.uploadedFiles.push(ficheiro));
        });

        this.on("error", function (file, error, xhr) {
            var ficheiro = { nome: file.name, status: xhr.status, statusText: xhr.statusText, erro: error.message };
            $scope.$apply($scope.errorFiles.push(ficheiro));
        });
  }

我认为现在发生的情况是,由于您正在覆盖默认的DropZone“error”和“success”回调函数,因此不会在文件上载分幅上创建“tick”和“cross”。并不是模板被改变了;您正在覆盖默认的DropZone错误和成功行为。为了显示“tick”和“cross”,您需要将代码从默认的DropZone error和success回调函数复制到您的函数中,然后实现您需要的任何附加或更改的行为