gpt4 book ai didi

javascript - 如何使用jquery文件上传 Angular 版本?

转载 作者:可可西里 更新时间:2023-11-01 02:31:06 27 4
gpt4 key购买 nike

这里是我如何使用angular jquery文件上传

var album = angular.module('album', ['restangular', 'blueimp.fileupload']),

.controller('somecontroller',function($scope,){
$scope.options = {
something
}

})

我所做的只是设置 scope.options,更改 Controller ,然后一切都神奇地工作了

设置jquery文件上传似乎很容易,但有些事情真的让我很困惑

如何调用jquery文件上传的回调函数。例如,如果文件上传成功,我想通过调用 fileuploaddone 函数来更新 ui,这让我很困惑,因为我的 Controller 中没有添加文件。

我是angularJS的新手,请帮助我了解angular jquery文件上传的工作流程

最佳答案

blueimp.fileupload 使用通过 $emit 触发的事件来通知父作用域:

             on([
'fileuploadadd',
'fileuploadsubmit',
'fileuploadsend',
'fileuploaddone',
'fileuploadfail',
'fileuploadalways',
'fileuploadprogress',
'fileuploadprogressall',
'fileuploadstart',
'fileuploadstop',
'fileuploadchange',
'fileuploadpaste',
'fileuploaddrop',
'fileuploaddragover',
'fileuploadchunksend',
'fileuploadchunkdone',
'fileuploadchunkfail',
'fileuploadchunkalways',
'fileuploadprocessstart',
'fileuploadprocess',
'fileuploadprocessdone',
'fileuploadprocessfail',
'fileuploadprocessalways',
'fileuploadprocessstop'
].join(' '), function (e, data) {
if ($scope.$emit(e.type, data).defaultPrevented) {
e.preventDefault();
}
})

这意味着您可以简单地在其中一个父作用域 Controller 中添加一个事件监听器,例如:

$scope.$on('fileuploadprocessdone', function(event, files){ 
$.each(files, function (index, file) {
//do what you want
});
});

您还可以在配置阶段覆盖默认的 handleResponse 函数,例如:

angular.module('myApp', ['blueimp.fileupload']).
.config(['fileUploadProvider', function (fileUploadProvider){
fileUploadProvider.defaults.handleResponse = function (e,data){
var files = data.result && data.result.files;
if (files) {
data.scope().replace(data.files, files);
// do what you want...
} else if (data.errorThrown || data.textStatus === 'error') {
data.files[0].error = data.errorThrown ||
data.textStatus;
}
};
}]);

关于javascript - 如何使用jquery文件上传 Angular 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17782297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com