angularjs - 只运行一次http请求

标签 angularjs http

我正在制作 AngularJS 应用程序,我正在对某些 View 的 Controller 发出 http post 请求,但我只希望它运行一次。我试过这样做。

aldro_app.controller('ctrInicio', function ($scope,$http, $rootScope) {

var contadorInicioCtr = 0;
contadorInicioCtr++;
 console.log("Contador -> " + contadorInicioCtr );
/* Http para retirar las ultimas facturas del contrato */
 var id = parseInt(getVariable("idcontrato"));
 var url = "http://api/url";
 if (contadorInicioCtr===1){
 $http({
     url : url,
     method: "POST",
     data: {id_contrato: id},
     headers:{
     "Content-Type":"application/json;charset=utf-8",
     "Authorization": "Bearer " + getVariable("token")
  }
 })
  .then(function(response){
       setVariable("facturas" , JSON.stringify(response.data));
 })
 }
});

我尝试使用一个简单的计数器,但是当我切换到另一个 View 并返回到 ctrInicio 的 View 时,计数器保持在 1,那么我该怎么做才能只运行一次 HTTP

最佳答案

这是因为每次您访问您的页面时,范围都会重新初始化。并且之前范围内设置的所有值都设置为默认值。

要实现你想要的,你可以做的是在 rootScope 上设置一个标志。

在你的 Controller 中,类似

$rootScope.contadorInicioCtr++

并添加检查

if ( $rootScope.contadorInicioCtr===1){ ... }

另一种方法可以是

创建用于发送您的请求的服务,并在第一次发送请求时更新标志。现在您可以在发送请求之前检查该标志。

因为 Angular 中的 service 是单例的,所以这不会更新变量的值并为你做这一切。

希望对你有帮助

谢谢

关于angularjs - 只运行一次http请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49793775/

相关文章:

java - HTTP 响应无法识别的文本

angularjs - 如何将 Controller 添加到 Angular JS 中的模块

angularjs - 更改动态加载的 SVG 的颜色

javascript - Angular 路由 Controller 无限循环

http - Amazon ELB 和 CouchDB 的性能问题

http - 将标签添加到默认的 Golang Prometheus 指标

http - 如何从 g-wan URI 中删除 "?"字符

angularjs - angular.service 定义 : service or factory

javascript - angularjs toastr 无法从粘性更改为动态关闭

c++ - C++ 中的 HTTP 代理服务器