setInterval和更新值AngularJS

Pau*_*ald 1 javascript setinterval angularjs

基于更改变量的值我希望在我的html中显示错误消息.我从我的角度代码调用api,如果它返回错误,我已经设置了一个setInterval函数,该函数应该将bookingData.tracking_id更新为false,然后在html中显示错误消息.这应该很容易,但是将它与setInterval结合起来有点困难.

这是angular/javascript

this.confirmTrackingTest = function () {
  TestService.finalPackageCheck({tracking_id: controller.bookingData.tracking_id}).$promise.then(function (data) {
    return data;
  }).catch(function (err) {
    var i = 0;
    var interval = setInterval(function () {
      i += 1;
      if (i === 3) {
        if (err.statusText === "Not Found") {
          controller.bookingData.showErrorMessage = true;
        }
        clearInterval(interval)
      }
    }, 2000);
    console.log(controller.bookingData.showErrorMessage)
  });
}

this.bookingData = {
  showErrorMessage: false,
  tracking_id: 1
};
Run Code Online (Sandbox Code Playgroud)

这是html:

{{Packs.bookingData.showErrorMessage}}
<div class="alert alert-danger" role="alert" ng-if="Test.bookingData.showErrorMessage">
  <p>Please show this message</p>
</div>
Run Code Online (Sandbox Code Playgroud)

{{Packs.bookingData.showErrorMessage}}节目false,以便在HTML中recongised.

如果需要任何进一步的信息,请告诉我.

dev*_*l69 9

这正是Angular神发明的原因$interval,以消除手动使用的需要$apply.

因此要么$scope.$apply在回调内部调用,要么使用$interval(不要忘记将它包含在参数列表中以进行依赖注入)