我正在将Fine Uploader集成到现有的工作流程中。用户需要提供一些元数据并选择一个文件,然后单击上传。
在选择文件之前,应禁用“上传”按钮。如果用户删除该文件,它应该返回到禁用状态。我有autoUpload:false
。
我正在使用AngularJS,因此我绑定了一个调用$("#fine-uploader").fineUploaderS3('getUploads')
的函数,这似乎是处理它的好方法。
但是,我需要一种在列表更改后获得通知的方法,因此我可以触发摘要周期并更新UI。我已经尝试为submitted
和cancel
事件注册回调,但是当上传仍在列表中时会调用cancel。
当用户在上传列表中添加或删除文件时,是否有更简洁的方法来获取回调?
答案 0 :(得分:1)
在您的情况下,收听“取消”事件是不合适的。为什么?因为您可以通过回调处理程序的返回值中止取消尝试,因此在调用取消回调时实际上没有取消文件/上传。
您可以通过收听statusChange
event确保该文件已在内部取消。当它被真正取消后,将使用文件ID和newStatus参数statusChange
调用qq.status.CANCELED
事件处理程序。
您可以在status change handling in the docs上阅读更多内容。
更新:由于您使用的是Fine Uploader UI,因此在更新此状态之前,不会从UI中删除该文件。这对您来说似乎不是问题,因为您正在使用getUploads
方法来确定文件状态。
答案 1 :(得分:0)
这是我的工作解决方案,以防对其他人有用:
$scope.uploader = $('#fine-uploader').fineUploaderS3({
...
}).on('statusChange', function (event, id, oldStatus, newStatus) {
$timeout(function () {
$scope.$digest();
});
});
$scope.has_selected_file = function () {
if (!$scope.uploader) return false;
var uploads = $scope.uploader.fineUploaderS3('getUploads');
var result = _(uploads).some(function (item) {
return item.status !== qq.status.CANCELED;
});
return result;
};
(使用Underscore.js)