angularjs 视图中的条件 http get 请求

angularjs conditional http get request in view

我认为 url 单击它会下载 excel 文件。 我想向该对话框添加一个 angular-微调器,以便在下载文件时显示微调器。

我可以启动和停止控制器中的微调器,但如果我将获取请求放在那里,我不会得到 excel 文件。

有什么办法可以从视图上做到这一点吗?或任何其他选项?

谢谢

PS: 下面的代码是视图中的 href link 我想在单击导出按钮时添加 angular-微调器并且正在下载文件并在完成时停止

<DIV>
      <a type="media_type" class="btn btn-primary"
                   href="/api/prj/report/job/{{jobId}}">Export</a>
            </div>

微调器的 html 代码如下,我可以使用它但是因为我的 http get 请求在视图中,我想知道如何知道文件是否正在下载(所以我展示微调器)并在它完成时停止它

<span us-spinner spinner-key="spinner-1"></span>

我认为您可以使用以下标记来做到这一点

  <span ng-if="serverIsProcessing" us-spinner spinner-key="spinner-1"></span>
  <a type="media_type" class="btn btn-primary"
               ng-click="export({{jobId}})">Export</a>

在您的控制器中,添加以下函数(不要忘记添加对“$window”和“$resource”的依赖):

 $scope.serverIsProcessing = false;

 $scope.export = function(jobId){
      $scope.serverIsProcessing = true;
      $resource("/api/prj/report/job/" + jobId).get(function(id){
           $window.open("/api/downloadTempFile/" + jobId);
           $scope.serverIsProcessing = false;
      }, function(error){
           //Handle error if needed
      });
 };

在您的控制器上,您需要执行 2 个操作:

  • 创建文件并将其存储在临时文件位置的操作
  • 下载先前创建的文件的操作(并在文件下载后将其删除)。