角度:等待 location.href 使用 $q.deffer 完成
Angular: wait for location.href to complete using $q.deffer
我正在尝试显示用户下载文件时的UI加载栏。下载文件代码已经工作,并且我已经使用 Angular 配置了一个 UI 进度指示器,因此只需将布尔值设置为 true 或 false 即可显示/删除进度条。我的代码如下所示:
$scope.getCompletedJobs = function () {
$rootScope.blockUI = true;
var params = {
StartDate: $scope.StartDate,
EndDate: $scope.EndDate
};
location.href = apiEntry.linkHref('get-completed-transfer-jobs') + "?" + $httpParamSerializer(params);
$rootScope.blockUI = false;
};
我的问题很明显,location.href 在执行后立即返回,导致 $rootScope.blockUI = false; 执行,有效 $rootScope.blockUI = false; 仅当 location.href 完成时。我相信我需要使用某种 deffer/promise 模式,但我不完全确定如何使用 Angular 实现这一点。
更新的答案
完成的工作代码现在如下所示
$scope.getCompletedJobs = function () {
$rootScope.blockUI = true;
var params = {
StartDate: $scope.StartDate,
EndDate: $scope.EndDate
};
$http.get(apiEntry.linkHref('get-completed-transfer-jobs') + "?" + $httpParamSerializer(params))
.then(function (response) {
//do something here with the response
$rootScope.blockUI = false;
var a = document.createElement('a');
a.href = 'data:attachment/csv;charset=utf-8,' + encodeURI(response.data);
a.target = '_blank';
a.download = 'CompletedTransferJobs.csv';
document.body.appendChild(a);
a.click();
});
};
您可能
不想将页面重定向到 API 端点,而是在那里发出请求,
$scope.getCompletedJobs = function () {
$rootScope.blockUI = true;
var params = {
StartDate: $scope.StartDate,
EndDate: $scope.EndDate
};
$http.get(apiEntry.linkHref('get-completed-transfer-jobs') + "?" + $httpParamSerializer(params)).then(function(response) {
//do something here with the response
$rootScope.blockUI = true;
})
};
sertvicename.getData().then(function(data){
//do what you want with data here
//false logic come here after
$rootScope.blockUI = false;
}).catch(fucntion(){
//if any error
})
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery UI自动完成突然停止工作
- 如何通过php页面将数据库值检索到jquery自动完成框中
- 如何确定javascript已经完成了某些操作.ios上的
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 在数据提取完成之前进行页面渲染
- jQuery自动完成阻止选择后聚焦
- Jquery UI自动完成无法工作
- 错误:对象没有't支持'自动完成'
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- Highchart:endOnTick没有完成xaxis的最大极限设置
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- 动画完成后的TweenMax
- 添加自定义标记以自动完成
- 角度异步http自动完成
- Don'不允许将焦点集中在自动完成的选择上
- 如何将JSON数据源适合Jquery自动完成小部件
- 如何在自动完成时设置属性标题
- 对象不支持属性或方法“自动完成”
- 角度:等待 location.href 使用 $q.deffer 完成