出于某种原因,我的观点是两次触发didInsertElement。我的代码没有什么特别之处。我在模板中使用{{view}}帮助器调用视图,该模板使用{{render“templateName”}}在使用应用程序出口显示的另一个模板中呈现。
App.PlaybackView = Ember.View.extend({
didInsertElement: function() {
Ember.$(document).on('keyup', { _self: this }, this.handler);
},
handler: function(e) {
if(e.which == 37) e.data._self.prev();
if(e.which == 39) e.data._self.next();
},
prev: function() {
this.get('controller').send('prev');
},
next: function(controller) {
this.get('controller').send('next');
}
});
此外,如果我使用{{partial}}帮助器来显示父模板,那么它只会被触发一次。但是,通过这种方式,我无法访问我想要的控制器。