如何计算AngularJS应用程序中特定事件的最后一个时间

时间:2015-03-16 19:06:09

标签: angularjs timer autosave

在我的Angular应用程序中,我想自动保存用户所做的更改。

我这样做的策略是我希望在用户停止更改后20秒自动保存。也就是说,如果他正在积极编辑,我希望计时器能够自动重置,直到最后一次击键,当它被允许运行其完整的20秒路线并触发自动保存时。

如何在Angular中维护一个可以定期重置并用于触发功能的时钟?

2 个答案:

答案 0 :(得分:1)

看看角度为$ timeout,你可以通过ng-change附加到每个输入框的函数调用它。取消承诺并在每次更换ng-change时重新创建它。

HTML:

  <body ng-controller="MainCtrl">

    <input type=text ng-model="theValue" ng-change="QueueAutoSave()" />

  </body>

SCRIPT:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$timeout) {
  $scope.theValue = 'World';

  var autoSavePromise;

  $scope.QueueAutoSave=function(){
    $timeout.cancel(autoSavePromise);
    autoSavePromise=$timeout(function(){
      alert("saved!");
    }, 20000);
  }
});

工作示例: plunk

答案 1 :(得分:0)

前一个答案的限制是您需要在应用程序的每个输入组件上添加ng-change函数。我以前在单个指令中隔离了这个功能,该指令是应用程序范围的,包含所有角度模板,表单等。该指令使用bind函数来侦听鼠标,键事件以重置$ timer。如果你有这样的功能,定时器功能可以调用一个函数来保存所有数据。但也许你是在个别基础上保存每一条数据。