I'm making a webpage that you can edit the text and after you stop typing for 1 second it will automagically save what you've typed.
Currently i'm just working out the $timeout details. I have it working when I call the update
method with no params, but when I call it with params, I get the error:
Error: fn is not a function $TimeoutProvider/this.$get</timeout/timeoutId<@http://localhost:63342/express_example/bower_components/angular/angular.js:14014 completeOutstandingRequest@http://localhost:63342/express_example/bower_components/angular/angular.js:4300 Browser/self.defer/timeoutId<@http://localhost:63342/express_example/bower_components/angular/angular.js:4601
Why am I getting this error when doing:
timeout = $timeout(update(element, content), 1000);
but not when I do:
timeout = $timeout(update, 1000);
Obviously I need to pass the params into the update method because I need to know what to update.
debounceUpdate($(this), data.content);
var debounceUpdate = function(element, content) {
console.log('in debouce');
if (timeout) {
$timeout.cancel(timeout);
}
timeout = $timeout(update(element, content), 1000);
};
// Update an existing section
var update = function(element, content) {
console.log('in update');
console.log('section_id to update is '+element.data('sectionId'));
console.log(content);
}
Your code calls update
immediately and tries to pass its return value as the $timeout
callback. You really wanted to call update from the $timeout
handler instead:
timeout = $timeout(function() {update(element, content);}, 1000);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With