2012-03-14 12 views
7

बस सोच रहा है कि हर बार एक बैकबोन.जेएस राउटर का उपयोग करने के लिए एक कस्टम फ़ंक्शन ट्रिगर करने का एक आसान तरीका है, बिना राउटर फ़ंक्शंस में इसे जोड़ने के। अब मेरी स्क्रिप्ट इस तरह दिखता है:बैकबोन.जेएस प्रत्येक बार राउटर का उपयोग करता है राउटर

var AppRouter = Backbone.Router.extend({ 

    routes: { 
     '' : 'index', 
     'test': 'test', 
    }, 

    initialize: function() { 
    }, 

    index: function() { 
     indexView.render(); 
    }, 

    test: function() { 
     testView.render(); 
    }, 

    change: function() { 
     customFunction(); 
    } 

}); 

किसी को भी किसी भी सुझाव हैं:

var AppRouter = Backbone.Router.extend({ 

    routes: { 
     '' : 'index', 
     'test': 'test', 
    }, 

    initialize: function() { 
    }, 

    index: function() { 
     customFunction(); 
     indexView.render(); 
    }, 

    test: function() { 
     customFunction(); 
     testView.render(); 
    }, 

}); 

मैं इसे इस तरह कुछ है चाहते हैं?

उत्तर

19

जब भी Router द्वारा कोई मार्ग मिलान किया जाता है, तो route:[name] ईवेंट मिलान किए गए मार्ग के नाम से निकाल दिया जाता है, ताकि कक्षाओं को कुछ रूट मैचों को सुनने की अनुमति मिल सके। सभी रीढ़ की हड्डी की वस्तुएं भी all घटना का समर्थन करती हैं जो किसी भी घटना के दौरान आग लगती है।

तो आप 10 पर all ईवेंट से जुड़ने के लिए इसका उपयोग कर सकते हैं, जो राउटर कुछ रूटिंग करते समय आग लग जाएगा।

initialize: function() { 
    this.bind("all", this.change) 
}, 

यदि आप मिलान किए गए मार्ग में रूचि रखते हैं, तो यह बाध्य कार्य के पहले पैरामीटर के रूप में पारित किया जाता है।

अधिक जानकारी here in the FAQ

+0

धन्यवाद के साथ प्रत्येक मार्ग परिवर्तन पर कॉल करने में कामयाब रहा, धन्यवाद, एक आकर्षण की तरह काम किया! हालांकि, मुझे बस बाइंड() – hampusohlsson

+0

ओप्स के बजाय इस। बाइंड() का उपयोग करना पड़ा, ओह, मैं इसके साथ अपना जवाब अपडेट करूंगा। – obmarg

+0

यदि आपके 'navigate' कॉल के हिस्से के रूप में आपको' {ट्रिगर: सत्य} 'मिला है तो क्या मार्ग "रन" से पहले या बाद में होता है? – tkone

9

एक और अधिक (नया) बैकबोन बाँध लेखन का तरीका है:

initialize: function() { 
    this.listenTo(this, "all", this.change) 
}, 

एक बेहतर बस route हो सकता है अगर आप मुझसे पूछें सुन; क्योंकि all दो घटनाओं से चलाता है, मैं इन लगता है:

"मार्ग: [नाम]" (पैरामीटर) - रूटर द्वारा निकाल दिया जब एक विशिष्ट मार्ग का मिलान नहीं हुआ है।
"मार्ग" (मार्ग, पैराम्स) - राउटर द्वारा निकाल दिया गया जब कोई मार्ग मिलान किया गया है।

+2

यह –

+2

के रूप में बेहतर उत्तर है और यह 2014 में बनाया गया था :) –

0

मैं रीढ़ की हड्डी के लिए नया हूं। लॉरेन के जवाब के बाद, मैं

app_router.on('route', function(e){ 
    console.log(e); 
}); 
संबंधित मुद्दे