AngularJS fn не является ошибкой функции, использующей $ timeout с функцией с параметрами
я делаю веб-страницу, которую вы можете редактировать текст, и после того, как вы перестанете печатать на 1 секунду, он автоматически сохранит то, что вы набрали.
В настоящее время я просто разрабатываю детали $timeout. У меня это работает, когда я называю update
метод без параметров, но когда я вызываю его с параметрами, я получаю ошибку:
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
почему я получаю эту ошибку при выполнении:
timeout = $timeout(update(element, content), 1000);
но не тогда, когда я делаю:
timeout = $timeout(update, 1000);
очевидно, мне нужно пройти параметры в метод 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);
}
1 ответов
ваш код вызывает update
немедленно и пытается передать свое возвращаемое значение как $timeout
обратный. Вы действительно хотели позвонить update из $timeout
обработчик вместо:
timeout = $timeout(function() {update(element, content);}, 1000);