我有一个共享的 ajax 方法返回承诺。我正在尝试使用 $uibModal 弹出窗口。Ajax 调用工作正常,但是当我完成 ajax 时弹出窗口不会关闭。对于 ajax 调用,在这种情况下它是否同步对我来说并不重要,我只想在从 ajax 调用中获得值后关闭弹出窗口。我猜这个弹出窗口是不可见的,但也许是别的东西。我对角度有点陌生,也许这里有角度的技巧。我想解决这个问题。非常感谢您的时间。
我的共享ajax方法是这样的:
app.value('getImgSrc', function(location, prefix, async){
var postData = {location:location, prefix:prefix};
var src = "";
var promiss = $.ajax({
async: async,
url:'/imgTool/getImgSrc',
dataType:"json",
data: postData
}).done(function(data, textStatus, jqXHR){
if(data.src){
src = data.src;
}else{
$log.info("getImgSrc for prefix:",prefix,"data:", data);
}
}).fail(function(jqXHR){
$log.error("getImgSrc ERROR, jqXHR:", jqXHR);
});
return promiss;
});
这是使用上述方法的控制器:
app.controller('PreviewCtrl', function($scope, $rootScope, $log, $location, $injector,$uibModal) {
....
var location = .....
var prefix = "/"+$scope.crop.name+"/"+$rootScope.jsonCrops.file;
$scope.src = "";
var popup = $uibModal.open({
animation: true,
templateUrl: 'progress.html',
ariaDescribedBy: 'modal-body',
size: "sm"
});
var getImgSrc = $injector.get('getImgSrc');
var callback = getS3ImgSrc(location,prefix, false).done(function(){});
if(callback.responseJSON.src){
this.popup.dismiss('cancel');
$scope.src = callback.responseJSON.src;
}
});