2011-12-15 6 views

उत्तर

5

यह संभव नहीं है वंशज। यह दृश्य के तत्व के बाहर तत्वों से घटनाओं की सदस्यता नहीं लेता है।

तो यदि आपके विचार का तत्व तालिका है, तो तालिका पर कीडाउन ईवेंट निकाल दिए जाने पर doSomething() फ़ंक्शन को कॉल किया जाएगा, लेकिन पृष्ठ पर किसी अन्य तत्व पर कीडाउन ईवेंट को निकाल दिया गया है, तो इसे नहीं कहा जाएगा।

+0

कैसे उपयोग करते हुए दृश्य है 'एल = $ (" शरीर ")' के बारे में द्वारा कर सकते हैं? ऐसा नहीं है कि मैं उस पर जोर दूंगा - बस इसके मजाक के लिए। –

+1

@PLJ अगर एल $ ("बॉडी") है तो इसे काम करना चाहिए। कई बैकबोन विचारों को नहीं जानते हैं जिनके शरीर में इसके तत्व के रूप में है। – Paul

2

आम तौर पर 'एचटीएमएल' काम करना चाहिए, इस सवाल को देखने पर keydown बोल:

keydown on body?

हालांकि, यह एक बैकबोन दृश्य में ईवेंट से ट्रिगर हो के लिए आम तौर पर बेहतर है व्यू के एल में तत्व। उस मामले में आप कर सकते हैं अपने सामान्य एप्लिकेशन चौड़ा देखें keydown आदानों स्वीकार करते हैं: क्योंकि रीढ़ का उपयोग करता घटनाओं को देखने के तत्व (view.el संपत्ति) और तत्व के पर घटनाओं की सदस्यता के लिए हैश

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

बस इसे देखने के आरंभिक विधि के अंदर jQuery जैसे ढांचे का उपयोग करके इसे बांधें।

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; 
     } 
    }); 

मत भूलना निकल करने के लिए, यह महत्वपूर्ण है; आप कुंजी दबाने में जाँच करता है, तो देखने के लिए अभी भी डोम (दस्तावेज़) में है देखने के लिए $(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"); 
} 
संबंधित मुद्दे