2013-01-18 12 views
5

मैं बैकबोन 0.9.10 में रूटिंग सेट अप करने का प्रयास कर रहा हूं।Backbone.js में वैकल्पिक मार्ग पैरामीटर? (दोबारा)

/england/ 
/england/birmingham 
/france 
/france/paris 
... 

आदि यह है कि मैं क्या पल में मेरी रूटर में है:: मैं निम्नलिखित प्रकार के मार्गों से मेल करना चाहते हैं

    :

    var AppRouter = Backbone.Router.extend({ 
        routes: { 
        "": "index", 
        "(/:country)": "index", 
        "(/:country)(/:city)": "index" 
        }, 
        index: function(country, city) { 
         console.log('index', country, city); 
        } 
    }); 
    var StateApp = new AppRouter(); 
    Backbone.history.start({ pushState: true }); 
    

    मैं दो समस्याएं हैं

  1. इस समय 'इंडेक्स' फ़ंक्शन फायरिंग नहीं कर रहा है, जो भी URL मैं = /, /england या किसी और चीज़ पर जाता हूं।
  2. मैं यह भी स्पष्ट नहीं हूं कि वैकल्पिक पैरामीटर जिस तरह से मैंने उन्हें सेट किया है, वैसे ही काम करेगा - क्या यह इस तरह की पंक्ति में दो वैकल्पिक पैरामीटर रखना ठीक है? मुझे नहीं पता कि मुझे अभी तक कितने देशों का समर्थन करने की आवश्यकता है, इसलिए मैं अलग-अलग देशों को निर्दिष्ट करने के बजाय country पैरामीटर पैरामीटर होने के लिए चाहता हूं।

यदि संभव हो तो मैं रेगेक्स पार्सिंग की तुलना में उचित यूआरएल रूटिंग का अधिक उपयोग करूंगा।

routes: { 
    "(:country)(/:city)": "index" 
} 

क्योंकि दोनों पैरामीटर वैकल्पिक हैं, इस मिलान हो जाएगा:

उत्तर

14

यदि आप चाहते हैं, अपने उदाहरण के रूप में, एक विधि के लिए रास्ते में (रूट सहित) सभी यूआरएल करने के लिए, एक मार्ग को परिभाषित करने के लिए अपने ही जरूरत :

  • "" (रिक्त स्ट्रिंग)
  • "इंग्लैंड"
  • "इंग्लैंड/लंदन"

आप england और england/london लेकिन के प्रारूप में केवल मार्गों चाहते हैं नहीं जड़ पेज /, एक अलग खाली मार्ग ऐलान करते हैं और बनाने के :country हिस्सा गैर वैकल्पिक:

routes: { 
    "" : "home", 
    ":country(/:city)": "index" 
} 
+0

प्रतिभाशाली विचार कर सकते हैं! बहुत बहुत धन्यवाद। मुझे बस प्रारंभिक स्लैश की आवश्यकता नहीं थी। – Richard

2

आप एक करना चाहते हैं एक मार्ग और आप जो यूआरएल दिखाना चाहते हैं उसे बदलने के लिए लचीलापन है। आप भी

routes: { 
"(/country/:country)(/city/:city)": "index" 
} 

मिलान

"" (Empty string) 
"country/england" 
"country/england/city/london" 
संबंधित मुद्दे