我想创建一个指令作为我想将自动保存功能附加到其他指令的属性。我考虑过创建一个指令来监视传入的属性(模型)。去抖动功能来自 lodash,并防止每次击键时执行。put 方法来自 restangular 模型。
到目前为止我的想法
angular.module('myApp.directives', []).directive('autosave',[ function () {
'use strict';
function autosaveController($scope) {
function saveModel(newModel, oldModel) {
if(newModel !== oldModel && newModel.put) {
$scope.model.put();
}
}
$scope.$watch($scope.model, _.debounce(saveModel, 5000), true);
}
return {
restrict : 'A',
controller: ['$scope', function($scope) {
return autosaveController($scope);
}],
scope : {
model : '='
}
};
}]);
但是我没有让这个工作,然后我想我最好把它放在我的restangular模型中,但我还没有找到范围。如何正确添加此自动保存功能?我需要能够定义范围内的哪个对象将被监视并将监视附加到它,以便我获得更改的更新。
编辑:创建了一个显示想法的 plunker:
http://plnkr.co/edit/I8GK8zHV8fOXY0zMa1AL?p=preview
我试图在两个指令上设置一个范围,并得到一个错误,这是不允许的。(不允许使用两个孤立的范围)
我可以在属性指令上创建一个隔离范围吗?
基本上我需要将模型传递给自动保存指令