2011-08-18 10 views
15

Galeride bu seçenekleri görebileceğiniz bir görünüm var. Galeri işlendiğinde (kapanana kadar) kilit olayları dinlemek ve hareket etmek istiyorum.Backbone.js - Görünüm etkinken önemli olayları ekleme?

Bunu omurga olaylarında nasıl yaparım? Ben 'keydown X' tüm varyasyonlarını denedim: fonksiyonu ve hiçbiri işe yaradı.

+0

Galeriniz omurga görünümünde veya bağımsız html + js? –

+0

Omurga görünümüdür. –

+0

bize 'keydown' olayları için seçicilerinizi göster ... onları yanlış elemanlara bağladığını düşünüyorum –

cevap

22

Sadece aşağıdaki test edilmiş ve sorunsuz çalıştı:

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

Geri dönüp kodunuzu kontrol ediyorum. Omurga'daki tüm olaylar, viewInstance.el öğesine eklenmiş delegeler olarak tanımlanır. Etkinlikleri kaldırmak için, $(viewInstance.el).remove() numaralı telefonu arayarak viewInstance.remove() numaralı telefonu arayın ve tüm temsilci olayları temizler. Ayrıca, bazı tarayıcılarda (ok tuşları gibi) bazı anahtarların (ok tuşları gibi) işaretlenmediği ve yetki verilen keypress olaylarıyla düzgün çalışmadığı bilinen bir sorun olduğunu unutmayın. Özel anahtarları yakalarsanız, muhtemelen keyup ve keydown'u kullanmanız daha iyi olur.

+2

Bu, söz konusu Görünümün girdileri içerdiği varsayımı yapmıyor mu? OP'nin belirli bir görüntünün basit bir şekilde işlendiği durumu sorduğunu sanıyorum - ışıklı bir görüntü veya bir şey olduğunu hayal edin ve görüntüyü kapatmak için "Kaçış" ı bağlamak istediğinizde ... –

+2

Siz haklısınız. Benim çözümümde giriş elemanları var. Görüntünün herhangi bir yerinde önemli olaylarda hareket etmek istiyorsanız, seçiciyi (omurga belgeleme durumları gibi) hariç tutabilirsiniz. 'olaylar: {keyup: 'logKey'}' – fearphage

+9

- Çalışmak için bu genel tuşa basma/tuşlamayı/tuş kilidini alamıyorum. Unutmam gereken başka küçük detaylar var mı? Belge çapında olaylar hakkında daha fazla bilgi için bir referansa veya bir kanala işaret edebilir misiniz? – streetlight