I usually include and require ngModel :
app.directive('cancelableInput', function($timeout) { return { restrict : "A", require : 'ngModel', scope: { ngModel: '=?' },
Then, when you want to change the model value and update it, you can simply do:
scope.$apply(function() { scope.ngModel = scope.last_saved_value; });
source share