仅运行一次http请求

时间:2018-04-12 10:06:50

标签: angularjs http

我正在制作AngularJS应用程序,我正在某些视图的控制器上发出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));
 })
 }
});

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

1 个答案:

答案 0 :(得分:1)

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

为实现目标,您可以做的是在rootScope上设置标记。

在你的控制器里面,像

这样的东西
$rootScope.contadorInicioCtr++

并添加支票

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

另一种方法可以是

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

由于角度中的service是单身,因此不会更新变量的值并为您完成所有操作。

希望这有帮助

由于