0
我有一個我想添加鍵盤快捷鍵的應用程序應用程序。無論用戶在應用中的哪個位置,特定的按鍵組合都應該工作,也就是說,按鍵應該觸發操作,而不管用戶在任何點處的控制器,視圖或路線。爲了做到這一點,我將不得不在我的應用程序中收聽keyPress
事件。我嘗試使用一個mixin混合到ApplicationView
,不幸的是,keyPress
事件只會在視圖具有焦點並且應用程序視圖並不總是有焦點時才被傳播。我想:Ember鍵盤快捷鍵
App.ApplicationView = Em.View.extend(App.KeyBoardShortcutsMixin,{
didInsertElement: function() {
this.$().focus();
}
});
這不會達到我的目的,因爲,在keyPress
事件之前,用戶與應用程序交互工作正常,但一旦這種觀點失去焦點,它將不再火災。由於我擁有大量的視圖,因此將混合視圖混入到可能在應用程序中創建的每個視圖中看起來很浪費。我怎樣才能以乾淨的方式添加這個功能?
我當然可以做到這一點,但我想知道是否有一種更符合實際的方式在燼中完成相同的操作?而不訴諸於jQuery。我想在mixin中執行的操作是向當前活動的控制器發送操作,並讓控制器處理操作。 – Hrishi
從未聽說過頁面級別的內置事件偵聽器......如果您仍想使用,您將不得不使用$('body')或$(document)來監聽事件或手動觸發焦點內置的按鍵視圖掛鉤。 –
這樣做的慣用方式是將事件處理函數'keyPress'添加到視圖中。請參閱http://emberjs.com/api/classes/Ember.View.html#toc_event-names。我預計這個事件會冒起來,但是YMMV。您可能想嘗試將處理程序放在應用程序視圖的'eventManager'哈希中。 –