2013-09-23 2 views
3

Я пытаюсь использовать Ember.run.debounce, чтобы запускать действие сохранения только на родительском представлении или контроллере один раз, когда есть много дочерних представлений, запускающих сохранение. Проблема заключается в закрытии (анонимная функция), но я не могу найти примеров наилучшего способа реализации debounce внутри Ember в этом контексте.Как добиться правильного закрытия с помощью Ember.run.debounce

Вот jsbin, излагающий проблему. Любая помощь или указатели оценили!

http://jsbin.com/esoNobo/1/edit?html,js,console,output

ответ

16

Ваше подозрение верно, но решение довольно легко.

Ваш подход:

App.GroupsView = Ember.View.extend({ 
    templateName: 'groups_view', 
    actions: { 
    save: function() { 
     Ember.run.debounce(this, function() { 
     console.log('groups view save'); 
     this.get('controller').send('save'); 
     }, 1000); 
    } 
    } 

}); 

Мое предложение Решение: Таким образом, вы не анонимную функцию и угасающий запустить цикл способен выполнять свою дребезга логику.

App.GroupsView = Ember.View.extend({ 
    templateName: 'groups_view', 
    actions: { 
    save: function() { 
     Ember.run.debounce(this, this.saveFn, 1000); 
    } 
    }, 
    saveFn : function(){ 
    console.log('groups view save'); 
    this.get('controller').send('save'); 
    } 

}); 
+0

Hey mavilein. Спасибо за предложение! Да, я думал, что так и будет. К сожалению, это тоже не работает. Я думаю, возможно, из-за контекста «этого», но не на 100% уверен. – i0n

+0

Хмм я проверил i с вашим бинтом: - /. Посмотрите: http://jsbin.com/OvEjafA/1/ – mavilein

+0

Я вижу 'контроллер save action' только один раз в консоли. И так оно и должно быть, верно? – mavilein

Смежные вопросы