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);