0

我有一个共享的 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;
    }

});
4

0 回答 0