在我的Angular应用程序中,我想自动保存用户所做的更改。
我这样做的策略是我希望在用户停止更改后20秒自动保存。也就是说,如果他正在积极编辑,我希望计时器能够自动重置,直到最后一次击键,当它被允许运行其完整的20秒路线并触发自动保存时。
如何在Angular中维护一个可以定期重置并用于触发功能的时钟?
答案 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。如果你有这样的功能,定时器功能可以调用一个函数来保存所有数据。但也许你是在个别基础上保存每一条数据。