2011-08-18 15 views
15

Mam widok zwany galerią z opcjami. Chcę słuchać i reagować na zdarzenia kluczowe podczas renderowania galerii (do czasu jej zamknięcia).Backbone.js - Dodawanie zdarzeń keydown, gdy widok jest aktywny?

Jak to zrobić w przypadku zdarzeń szkieletowych? Próbowałem wszystkich odmian "keydown X": funkcja i żadna nie zadziałała.

+0

Twoja galeria jest widokiem szkieletu lub samodzielnego html + js? –

+0

To jest widok szkieletowy. –

+0

pokaż nam swoje selektory zdarzeń 'keydown' ... myślę, że wiążesz je z niewłaściwymi elementami –

Odpowiedz

22

Właśnie przetestowane następujące i to działało bez zarzutu:

var view = Backbone.View.extend({ 
    // ... snip ... 
    events: { 
    'keyup :input': 'logKey' 
    ,'keypress :input': 'logKey' 
    } 
    ,logKey: function(e) { 
    console.log(e.type, e.keyCode); 
    } 
}); 

Chciałbym wrócić i sprawdzić kod. Wszystkie zdarzenia w kręgosku są zdefiniowane jako delegaty dołączone do elementu viewInstance.el. Aby odłączyć zdarzenia, zadzwoń pod numer viewInstance.remove(), który wywołuje pod pokrywami $(viewInstance.el).remove() i czyści wszystkie delegowane zdarzenia.

Należy również zauważyć, że w niektórych przeglądarkach (jak sądzę Firefox) istnieje znany problem polegający na tym, że niektóre klawisze (takie jak klawisze strzałek) nie pęcznieją i nie będą działać poprawnie z delegowanymi zdarzeniami keypress. Jeśli łapiesz specjalne klucze, prawdopodobnie lepiej jest używać keyup i keydown.

+2

Czy to nie czyni założenia, że ​​dany widok zawiera dane wejściowe? Myślę, że OP pytał o sprawę, w której konkretny widok jest po prostu renderowany - wyobraź sobie, że jest tam obraz z lightboxem lub coś podobnego i chciałeś podłączyć "Escape" do zamknięcia obrazu ... –

+2

Masz rację. Moje rozwiązanie zakłada, że ​​są elementy wejściowe. Jeśli chcesz działać na kluczowych wydarzeniach w dowolnym miejscu w widoku, po prostu wyklucz selektor (jak stwierdza dokumentacja Trzon). 'events: {keyup: 'logKey'}' – fearphage

+9

- Nie mogę uruchomić tych globalnych klawiszy/klawiszy/keydown do pracy. Czy jest jakiś inny drobny szczegół, o którym muszę zapomnieć? Czy możesz wskazać odniesienie, a nawet skrzypce, aby uzyskać więcej informacji o zdarzeniach dotyczących całego dokumentu – streetlight

Powiązane problemy