Ember.js 1.2.0 debounce не работает как ожидалось в jquery-событиях

Я пытаюсь настроить debounce на событие изменения размера окна и ранее имел возможность с подчеркиванием и jquery следующим образом:

$(window).on('resize', _.debounce($.proxy(this.windowWidthChanged, this), 333));

Я принял это решение и попытался применить его к Ember Ember.run.debounce следующим образом:

$(window).on('resize', Ember.run.debounce(this, this.windowWidthChanged, 333));

Слушатель событий, похоже, не срабатывает вообще...

2 ответа

как вы могли догадаться, вы не передавали функцию в событие изменения размера, а информацию об отмене (результат вызова debounce).

var self = this;
$(window).on('resize', function(){ Ember.run.debounce(self, self.windowWidthChanged, 333)});

Это восходит к классической дилемме setTimeout, почему она работает сразу?

setTimeout(alert('hello'),2000)


Я закончил тем, что обернул его анонимной функцией внутри прокси, чтобы поддерживать this контекст:

$(window).on('resize', $.proxy(function() {
 Ember.run.debounce(this, this.windowWidthChanged, 333);
}, this));

Полагаю, вы могли бы просто перемещать Ember.run.debounce внутри windowWidthChanged.

licensed under cc by-sa 3.0 with attribution.