2011-12-15 6 views

cevap

5

Bu mümkün değildir: Bu durumda genel uygulama çapında Görünüm keydown girişleri kabul yapabiliriz torunları. Görünüm öğesinin dışındaki öğelerin etkinliklerine abone olmaz.

Bu nedenle, görünümünüzün öğesi tablodursa, keydown olayı tablonun üzerine getirildiğinde doSomething() işlevi çağrılır, ancak keydown olayının sayfada başka bir öğeye atılması durumunda çağrılmaz.

+0

Nasıl kullanarak görmek tuşla kontrol edebilirim? Bunu en çok sevdiğimden değil - sadece eğlence/meraktan dolayı. –

+1

@PLJ, el $ ("body") ise, o zaman çalışmalıdır. Vücudunu eleman olarak sahip olan pek çok Omurganın görüşlerini bilmiyorum. – Paul

2

Genellikle 'html' Bu soruyu bakın çalışmalıdır üzerinde keydown konuşan: Ancak

keydown on body?

, tarafından tetiklenebilir bir Omurga görünümünde etkinlik için genellikle daha iyidir View'in elindeki elemanlar. Omurga olaylar görünümün elemanı (view.el mülkiyet) ve eleman en olaylara abone olmak karma kullandığı için

events: { 
    'keydown': 'doSomething' 
} 
1

Basitçe, görünümün başlangıç ​​yöntemi içinde jQuery gibi bir çerçeve kullanarak bağlayın.

var View = Backbone.View.extend({ 
     initialize: function() { 
     _.bindAll(this, "keyPress"); 
     $(document).bind('keydown', this.keyPress); 
     }, 
     keyPress: function(e) { 
     console.log(e.keyCode); 
     alert(e.keyCode); 
     return false; 
     } 
    }); 

Unutmayı unutmayın, önemli; Eğer görünümü hala dom (belgede) ise `el = $ ("vücudu")` sahiptir görünümü hakkında $(document).find(this.$el).size()

if($(document).find($(this.options.container)).size() <= 0) { 
     alert("view not in document"); 
     $(document).unbind('keydown', this.keyPress); 
}else { 
     alert("view is here"); 
}