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

How to count an amount of time from the last of a particular event, in AngularJS app

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

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

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

查看 angular 中的 $timeout,您可以从通过 ng-change 附加到每个输入框的函数中调用它。每次点击 ng-change 时取消承诺并重新创建它。

HTML:

  <body ng-controller="MainCtrl">

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

  </body>

脚本:

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

前一个答案的局限性在于您需要在应用程序中的每个输入组件上添加一个 ng-change 函数。我之前将此功能隔离在应用程序范围内的单个指令中,包含所有 angular 模板、表单等。该指令使用绑定函数来侦听鼠标、键事件以重置 $timer。如果您有这样的功能,则计时器功能可以调用一个功能来保存所有数据。但也许您正在单独保存每条数据。