gpt4 book ai didi

javascript - 将参数传递给 XMLHttpRequest eventListener 函数

转载 作者:行者123 更新时间:2023-11-30 08:03:06 25 4
gpt4 key购买 nike

我有一个带有文件上传屏幕的 angularjs 应用程序。

为了监控文件上传的进度,我注册了'progress'事件处理程序如下:

xhr.upload.addEventListener("progress", uploadProgress, false);

我的函数:

  function uploadProgress(evt) {
$scope.$apply(function(){
if (evt.lengthComputable) {
$scope.data.progress[0] = evt.loaded;
} else {
$scope.data.progress = 0;
}
})
}

我需要再传递一个参数给 uploadProgress 方法。我怎样才能做到这一点?

本质上是一个额外的参数,像这样说“我”:

xhr.upload.addEventListener("progress", uploadProgress(i), false);

最佳答案

这不是 Angular 特有的。

你可以使用标准JS的 bind() :

function uploadProgress(i, evt) {
...

xhr.upload.addEventListener("progress", uploadProgress.bind(null, i), false);

您可以使用 Angular 的 angular.bind() :

function uploadProgress(i, evt) {
...

xhr.upload.addEventListener("progress", angular.bind(null, uploadProgress, i), false);

最后,您还可以使用普通的旧 closure (它是更多代码,但具有允许您指定任意参数顺序的好处):

function uploadProgress(evt, i) {
...

var j = i; // because `i` might have changed by the time
// our callback is called, we need the current value
xhr.upload.addEventListener("progress", function (evt) {
uploadProgress(evt, j);
}, false);

关于javascript - 将参数传递给 XMLHttpRequest eventListener 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23389410/

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