加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何添加Angular $http事件侦听器

发布时间:2020-12-17 07:12:03 所属栏目:安全 来源:网络整理
导读:我目前正在使用角度指令上传文件… var fd = new FormData();fd.append("uploadedFile",scope.uploadedFile);var xhr = new XMLHttpRequest();xhr.upload.addEventListener("progress",uploadProgress,false);xhr.addEventListenter("load",uploadComplete,f
我目前正在使用角度指令上传文件…

var fd = new FormData();
fd.append("uploadedFile",scope.uploadedFile);

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress",uploadProgress,false);
xhr.addEventListenter("load",uploadComplete,false);
xhr.addEventListenter("error",uploadFailed,false);
xhr.addEventListenter("abort",uploadCanceled,false);
xhr.open("POST",scope.postUrl);
scope.uploadInProgress = true;
xhr.send(fd);

function uploadProgress(e){
  scope.$apply(function(){
    if(e.lengthComputable){
      scope.progress = Math.round(e.loaded * 100 / e.total);
    } else {
      scope.progress = 'unable to compute';
    }
  });
 }

 ...

可以使用$http提供程序重构此代码段吗?我无法弄清楚如何保持我的事件监听器.

解决方法

简短的回答:很快你就可以了,但还没有完全按照你的要求.

有一些选项正在讨论构建功能 – 暴露基础xhr对象,或允许为方法设置回调.

具体见https://github.com/angular/angular.js/issues/1934 – 目前进度事件不起作用.

在此期间,我建议您手动创建一个对象,并使用$apply更新您的范围,就像您一样.

有关如何使用服务来设置至少可以捕获的启动和停止事件的更多详细信息,请参阅此问题 – 但在进度上没有运气.

AngularJS: need to fire event every time an ajax call is started

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读