" IdleStart"即使在超时后功能也会再次启动" Angular Js"

时间:2017-04-10 12:58:23

标签: angularjs timeout

我是棱角分明的初学者。我正在尝试实现超时。如果用户闲置超过5秒,我会显示模型。当我成功注销超时时。此对话框不断出现。我该如何解决这个问题。

enter image description here

这是我的配置。

<div class="row" infinite-scroll='nextPage()' infinite-scroll-disabled='busy' infinite-scroll-distance='1'>
    <div class="col-sm-6"  ng-repeat="deployedpet in deployed_pets">
        {{data}}
    </div>
    <div ng-show='busy'>Loading data...</div>
</div>

这是我的活动:

     IdleProvider.idle(5); 
     IdleProvider.timeout(30); // after 30 seconds idle, time the user out
     KeepaliveProvider.interval(5*60); 

已更新

我的观点代码:

 $scope.$on('IdleEnd', function() {
      Idle.unwatch();
      $uibModal.close();
    });

    $scope.$on('IdleTimeout', function() {    
      Idle.unwatch();
      $scope.SignOut();
      $uibModal.close();
    });

   $scope.$on('IdleStart', function() {
     $scope.warning = $uibModal.open({
      templateUrl: 'warning-dialog.html',
      windowClass: 'modal-danger'
    });
  });

在这个div中

   **<script type="text/ng-template" id="warning-dialog.html">
          <div class="modal-header">
           <h3>You're Idle. Do Something!!!</h3>
          </div>
          <div idle-countdown="countdown" ng-init="countdown=5" class="modal-body">
           <uib-progressbar max="5" value="5" animate="false" class="progress-striped active">You'll be logged out in {{countdown}} second(s).</uib-progressbar>
          </div>
        </script>**

如果我删除 idle-countdown =&#34;倒计时&#34; ,那么型号不会再次出现并将我退出,但我的侧栏会一直显示。我弄清楚了。

侧栏包含菜单和下拉菜单但登出后这些菜单消失了,但这个简单的侧栏继续显示只需删除&#34;空闲倒计时&#34;

enter image description here

2 个答案:

答案 0 :(得分:0)

您可能需要在Idle.unwatch();之前调用signing out

答案 1 :(得分:0)

   $scope.$on('IdleEnd', function() {     
     $timeout(function() {
                        $scope.$apply(function() {
                                     Idle.unwatch();
                                      $uibModal.close();
                        });
                    }, 100);
       });

试试这个。