2011-04-25 14 views
10

कहें कि मेरे पास एक ऐसा दृश्य है जो सबमिट बटन के साथ एक खोज बॉक्स प्रदर्शित करता है। जब मैं सबमिट बटन पर क्लिक करता हूं, तो मैं खोज बॉक्स के मान को किसी अन्य दृश्य में कैसे पास करूं?कस्टम दृश्यों के साथ एक दृश्य से दूसरे डेटा को कैसे पास किया जाए?

मैंने कोशिश की:
दृश्य 1 में, अंदर प्रस्तुत कॉलबैक: this.trigger('abc', $('#searchBox').val())
दृश्य 2 में, इनिशियलाइज़ समारोह में: this.bind('abc', function(data){ console.log(data); })

लेकिन यह है कि काम करने के लिए प्रतीत नहीं होता: कस्टम घटना निकाल दिया जाता है, लेकिन देखें 2 इसे नहीं देखता है।

उत्तर

5

दुर्भाग्य से आप इस तरह से बाध्य नहीं कर सकते हैं - आप एक संदर्भ साझा करने के लिए view2 में View1 करने की आवश्यकता होगी:

var View2 = Backbone.View.extend({ 
    initialize: function() { 
     _.bindAll(this, 'foo'); 
     this.view1.bind('abc', this.foo);   
    }, 
    foo: function(data) { 
     console.log(data); 
    } 
}); 

यह भी मतलब है कि कुछ बिंदु पर आप ऐसा View2 के अपने उदाहरण पर view1 निर्धारित करने की आवश्यकता कि आप इसके खिलाफ बांध सकते हैं।

आप संदर्भ के आसपास पारित करने के लिए, बस में एक साथ दो दृश्य बाँध जो कुछ कंटेनर आप उन्हें (यानी कोई अन्य दृश्य या एक नियंत्रक) में पकड़े हुए हैं नहीं करना चाहते हैं:

var view1 = new View1(); 
var view2 = new View2(); 

view1.bind('abc', view2.foo); 
+0

धन्यवाद। यह काम करता है। –

+1

'एबीसी' क्या है? क्या यह एक दृश्य 1 से जुड़ा हुआ है? –

1

मैं एक उपयोग करने का सुझाव रीढ़ की हड्डी के अलावा पबसब ढांचा। MinPubSub एक लोकप्रिय विकल्प है। मैं https://github.com/phiggins42/bloody-jquery-plugins से निकाले गए jquery पबब एक्सटेंशन का उपयोग करता हूं।

फिर, देखें 2 एक संदर्भ की जरूरत नहीं है 1. दृश्य एंड्रयू हरे के उदाहरण को संशोधित करने के लिए आपको क्या करना होगा:

var View2 = Backbone.View.extend({ 
     initialize: function() { 
      _.bindAll(this, 'foo'); 
      $.subscribe('abc', this.foo);   
     }, 
     foo: function(data) { 
      console.log(data); 
     } 
    }); 

फिर देखें 1:

$.publish('abc', $('#searchBox').val()); 
बेशक

, एक पबब सिस्टम के साथ, शायद आप "एबीसी" से बेहतर कुछ उपयोग करना चाहते हैं, शायद इस विषय के रूप में "searchbox: submit" चुनने के बजाय।

6

यहाँ @ LosTechies.com Derick Bailley द्वारा एक महान लेख है: References, Routing, And The Event Aggregator: Coordinating Views In Backbone.js

यह लेख पबसब कि Backbone.JS में बनाया गया है का उपयोग कर एक सरल उपाय चर्चा करता है। मैं डेरिक से सहमत हूं जब वह उल्लेख करता है कि विचारों को रद्द किया जाना चाहिए।

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