2011-08-18 12 views
15

मेरे पास गैलरी नामक एक दृश्य है जो विकल्प। जब गैलरी प्रस्तुत की जाती है (जब तक यह बंद नहीं हो जाती है) मैं कुंजीडाउन घटनाओं को सुनना और कार्य करना चाहता हूं।Backbone.js - दृश्य सक्रिय होने पर कीडाउन घटनाओं को जोड़ना?

बैकबोन घटनाओं में मैं इसे कैसे कर सकता हूं? मैंने 'कीडाउन एक्स' के सभी बदलावों की कोशिश की है: फ़ंक्शन और कोई भी काम नहीं किया है।

+0

आपकी गैलरी रीढ़ की हड्डी दृश्य या स्टैंडअलोन एचटीएमएल + जेएस है? –

+0

यह रीढ़ की हड्डी का दृश्य है। –

+0

हमें 'keydown' घटनाओं के लिए अपने चयनकर्ता दिखाएं ... मुझे लगता है कि आप उन्हें गलत तत्वों के लिए बाध्यकारी करते हैं –

उत्तर

22

मैं सिर्फ निम्नलिखित परीक्षण किया है और यह दोषरहित काम किया:

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

मैं वापस जाने के लिए और अपने कोड की जांच चाहते हैं। बैकबोन में सभी घटनाओं को viewInstance.el तत्व से जुड़े प्रतिनिधियों के रूप में परिभाषित किया गया है। घटनाओं को अनइंड करने के लिए, viewInstance.remove() पर कॉल करें जो कवर के तहत $(viewInstance.el).remove() पर कॉल करता है और सभी प्रतिनिधि कार्यक्रमों को साफ़ करता है।

भी ध्यान रखें कि कुछ ब्राउज़रों में (फ़ायरफ़ॉक्स मेरा मानना ​​है कि) वहाँ एक ज्ञात मुद्दा है कि कुछ चाबियाँ (तीर कुंजी) की तरह बुलबुला नहीं है और प्रत्यायोजित keypress घटनाओं के साथ ठीक से काम नहीं करेगा। यदि आप विशेष कुंजी पकड़ रहे हैं, तो आप keyup और keydown का उपयोग कर शायद बेहतर हो सकते हैं।

+2

क्या यह धारणा नहीं है कि प्रश्न में दृश्य में इनपुट शामिल है? मुझे लगता है कि ओपी उस मामले के बारे में पूछ रहा था जहां एक विशेष दृश्य प्रस्तुत किया जाता है - कल्पना करें कि एक लाइटबॉक्स वाली छवि या कुछ है और आप छवि को बंद करने के लिए "एस्केप" को हुक करना चाहते हैं ... –

+2

आप सही हैं। मेरा समाधान मानता है कि इनपुट तत्व हैं। यदि आप दृश्य में कहीं भी महत्वपूर्ण घटनाओं पर कार्य करना चाहते हैं, तो आप केवल चयनकर्ता को छोड़ दें (बैकबोन दस्तावेज़ राज्यों के रूप में)। 'ईवेंट: {keyup: 'logKey'}' – fearphage

+9

- मुझे काम करने के लिए इन वैश्विक कीप्रेस/कीप/कीडाउन नहीं मिल सकती हैं। क्या कोई अन्य मामूली विस्तार है कि मुझे भूलना होगा? दस्तावेज-व्यापी घटनाओं की अधिक जानकारी के लिए आप संभावित रूप से किसी संदर्भ या यहां तक ​​कि एक पहेली को इंगित कर सकते हैं – streetlight

संबंधित मुद्दे