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