2011-07-20 8 views
9

से बैकबोन.जेएस कस्टम इवेंट। मेरे पास दो विचार हैं, सादगी के लिए माता-पिता/बच्चे। बच्चा एक घटना फेंकने के लिए ट्रिगर का उपयोग कर रहा है। मैं इसे माता-पिता के हैंडलर में नहीं देख रहा हूं। क्या नीचे मान्य है?चाइल्ड व्यू

var parent = Backbone.View.extend({ 
    events: { "childevent": "run" }, 
    run: function(e) { 
     console.log(e); 
    }, 
    render: function() { /* render the child here */ } 
}); 

var child = Backbone.View.extend({ 
    someAction: function() { this.trigger('childevent'); } 
}); 

उत्तर

18

इसे समझ लिया! $(this.el).trigger('childevent'); काम करता है।

+0

अपना समाधान पोस्ट करने के लिए धन्यवाद !! – Kirk

+0

$() रैपर वह है जो मैं याद कर रहा था। धन्यवाद! – gthmb

+3

आप इसे भी आजमा सकते हैं। कैश किए गए jQuery प्रॉपर्टी – Gus

2

इसके बजाय events: { "childevent": "run" } नहीं होना चाहिए? कोड में इस स्थान पर वास्तविक अनाम फ़ंक्शन तक पहुंचने का कोई तरीका नहीं है।

+0

मुझे वास्तव में यह था, हालांकि यह अभी भी काम नहीं करता है, मैंने अभी इसे गलत टाइप किया है। अच्छी पकड़। –

2

बैकबोन this.$el संपत्ति में दृश्य के नोड के लिए एक jQuery संदर्भ संग्रहीत करता है ताकि आप $(this.el) द्वारा संदर्भ की पुन: गणना करने के बजाय इसका उपयोग करके कुछ प्रदर्शन छोड़ सकें।

एक दृश्य पर घटनाओं संपत्ति, विचारों एल या $ एल तत्वों के भीतर घटकों से ऑटो-बाध्यकारी एचटीएमएल डोम की घटनाओं के लिए है और:

// use "this.$el.trigger()" to refer to jQuery's object 
this.$el.trigger('childevent'); 
1

जाहिर है देर से, लेकिन किसी और के लिए है जो इस भर आता है

घटनाओं: वाक्य रचना दोनों एक यूआई घटना और जोड़ी में कुंजी के रूप में एक चयनकर्ता शामिल है { "#someButton क्लिक करें", "clickHandler"}

अन्य मॉडल या दृश्य से घटनाओं को सुनने के लिए, तो आप इस का उपयोग करें। सुनो (लक्ष्य, .....)

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