Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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
Javascript 将参数传递给XMLHttpRequest eventListener函数_Javascript_Angularjs - Fatal编程技术网

Javascript 将参数传递给XMLHttpRequest eventListener函数

Javascript 将参数传递给XMLHttpRequest eventListener函数,javascript,angularjs,Javascript,Angularjs,我有一个带有文件上传屏幕的angularjs应用程序 为了监控文件上传的进度,我注册了“进度”事件处理程序,如下所示: xhr.upload.addEventListener("progress", uploadProgress, false); 我的职能: function uploadProgress(evt) { $scope.$apply(function(){ if (evt.lengthComputable) {

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

为了监控文件上传的进度,我注册了“进度”事件处理程序,如下所示:

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方法传递一个参数。 我怎样才能做到这一点

本质上是一个额外的参数,表示“i”,如下所示:

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

这不是特定角度的

您可以使用标准JS的

function uploadProgress(i, evt) {
    ...

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

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

您可以使用Angular的

function uploadProgress(i, evt) {
    ...

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

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

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


你的意思是像调用
uploadProgress(i,evt)
而不是
uploadProgress(evt)