我正在尝试使用 Ember.run.debounce 仅在有许多子视图触发保存时触发父视图或控制器上的保存操作。问题似乎是闭包(匿名函数),但我找不到在这种情况下在 Ember 中实现去抖动的最佳方法的任何示例。
这是一个概述问题的jsbin。任何帮助或指针表示赞赏!
我正在尝试使用 Ember.run.debounce 仅在有许多子视图触发保存时触发父视图或控制器上的保存操作。问题似乎是闭包(匿名函数),但我找不到在这种情况下在 Ember 中实现去抖动的最佳方法的任何示例。
这是一个概述问题的jsbin。任何帮助或指针表示赞赏!
您的怀疑是正确的,但解决方案很简单。
你的方法:
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);
}
}
});
我的解决方案建议:这样您就没有匿名函数,并且 Ember 运行循环能够执行其去抖动逻辑。
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');
}
});