【问题标题】:Terminate $interval on view leave在查看休假时终止 $interval
【发布时间】:2016-07-30 23:53:11
【问题描述】:

我有一个在 ionic/angular 应用程序中运行 doRefresh() 的简单计数器,您可以看到它使用 $interval 调用自身,但是当用户离开此视图时。计数器仍在运行。我不能让它停止运行。我已经尝试了很多东西,包括下面的代码。请帮忙。谢谢你

$interval(function () { 
  $scope.doRefresh(); 
  console.log("refresh done");
}, 3000);

$scope.$on('$ionicView.enter', function(){

$scope.$on("$destroy",function(){
    if (angular.isDefined($scope.doRefresh())) {
        $interval.cancel($scope.doRefresh())
        console.log("Destroyed");
    }
  });


});

【问题讨论】:

    标签: javascript angularjs node.js ionic-framework


    【解决方案1】:

    $interval 返回您需要取消间隔的承诺。见以下代码:

    var refresher = $interval(function () { 
      $scope.doRefresh(); 
      console.log("refresh done");
    }, 3000);
    
    $scope.$on('$ionicView.enter', function(){
    
    $scope.$on("$destroy",function(){
        //This really wouldn't be needed, as refresher should always be defined.
        if (angular.isDefined(refresher)) {
            $interval.cancel(refresher);
            refresher = undefined;
            console.log("Destroyed");
        }
      });
    
    
    });
    

    【讨论】:

    • 这会返回一堆错误。我用这段代码尝试了多种不同的尝试。没有任何效果
    • 根据 url 停止间隔会更好吗?它不是必须是 ionic view.leave 或类似的吗?
    • unexpected token { at line {{if语句行}}
    • 哎呀,错过了结束)。我已经更新了我的答案。
    • 谢谢@FrankerZ,我应该自己抓住它。我以为它很快就坏了。谢谢你
    猜你喜欢
    • 1970-01-01
    • 2018-06-29
    • 2014-06-24
    • 1970-01-01
    • 2015-09-05
    • 2011-09-18
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多