通过角度js中的ajax调用加载模板URL

时间:2015-11-24 10:02:57

标签: javascript angularjs ajax

我想发送一个ajax请求来获取modal的templateurl的jsp / html页面。  我用这样的代码写的。

 var modalInstance = $uibModal.open({
                    animation: $scope.animationsEnabled,
                    templateUrl: 'pages/recordingDetailPopup .jsp',
                    controller: 'FileDetailCtrl',
                    size: 'lg',
                    resolve: {
                        activeRecords: function () {
                            return inbnoxList;
                        }
                    }
                });

但我想做类似这样的事情

 var modalInstance = $uibModal.open({
                animation: $scope.animationsEnabled,
                templateUrl: function(){
                $http.get('fileDetailJsp');
                },
                controller: 'FileDetailCtrl',
                size: 'lg',
                resolve: {
                    activeRecords: function () {
                        return inbnoxList;
                    }
                }
            });

如何实现此功能。请建议。

2 个答案:

答案 0 :(得分:1)

您的第二个代码段中的

templateUrl将返回一个承诺,而不是jsp文件的回复。

在上面的场景中,您需要先从jsp获取响应,然后在模态上调用.open方法,如下所示 -

$http.get('fileDetailJsp').then(function(url){
      var modalInstance = $uibModal.open({
            animation: $scope.animationsEnabled,
            templateUrl: url,
            controller: 'FileDetailCtrl',
            size: 'lg',
            resolve: {
                activeRecords: function () {
                    return inbnoxList;
                }
            }
        });
}, function(){
  // error here
 });

希望这会有所帮助......

答案 1 :(得分:0)

当您致电$http.get('fileDetailJsp');}时,会返回Promise。你致电$uibModal.open的那一刻,承诺还没准备好。这就是你什么都没得到的原因。正如@pdenes所提到的那样,你需要这样的东西:

$http.get('fileDetailJsp').then(function(response) {
   $uibModal.open(...use something from response...); 
});