2013-11-14 12 views
6

मैं इस काम करने के लिए प्राप्त करने की आवश्यकता: ': उत्पाद' मार्ग भले ही वह बाद में सेट किया गया है सेट कर दिया जाता है, जबकिबैकबोन रूटर

routes: { 
    ':product' : 'showProduct', 
    ':product/:detail': 'showProductDetail' 

showProductDetail कभी नहीं कहा जाता हो जाता है। मैंने निम्नलिखित

routes: { 
    ':product(/:detail)': showProductOrDetail 
} 

पर प्रयास किया लेकिन यह केवल दूसरे पैरामीटर में परिवर्तन होने पर नहीं कहा जाएगा। यह महत्वपूर्ण है कि मेरे पास उत्पाद स्वयं या यूआरएल में उत्पाद और विवरण है।

क्या कोई यह जानता है कि इसे कैसे ठीक किया जाए?

उत्तर

16

आपकी समस्या के लिए थोड़ा हैकी समाधान है।

routes: { 
    "product/:id": "showProduct", 
    "product/:id/details/:did": "showDetails" 
}, 

showProduct: function(id) { 
    this.showDetails(id); 
}, 

showDetails: function(id, did) { 
    // Check did for undefined 

} 
+0

इस मामले में आपका दृष्टिकोण काम करेगा, लेकिन जैसा कि मैंने कहा था कि मैं दूसरे मार्ग में भी उत्पाद रखना चाहता हूं, इसलिए मैं कुछ ऐसा कर सकता हूं: mywebsite.com/#category/1/product/3/detail/1 – matteok

+0

मैंने अपना जवाब अपडेट कर लिया है। क्या यह वही है आप जिसकी तलाश में हैं? –

+0

यह काम नहीं करता है अगर मैं केवल mywebsite/com/# product/1 सही कहता हूं? – matteok

1

एक देर से प्रतिक्रिया (एक वर्ष से अधिक) .. लेकिन आप इस लक्ष्य को हासिल करने के लिए एक बैकबोन रूटर में रेगुलर एक्सप्रेशन से उपयोग कर सकते हैं: मुझे लगता है वहाँ यह करने के लिए एक अच्छा तरीका है, लेकिन यह काम करना चाहिए। मेरा उदाहरण मानता है कि पैरामीटर एक संख्या से शुरू होने जा रहे हैं।

अर्थात्: स्थानीय होस्ट: 8888/# जड़/1param/2param

var router = Backbone.Router.extend({ 
    initialize: function() { 
     // Use REGEX to get multiple parameters 
     this.route(/root/, 'page0'); 
     this.route(/root\/(\d+\S+)/, 'page1'); 
     this.route(/root\/(\d+\S+)\/(\d+\S+)/, 'page2'); 
    }, 
    page0:function(){ 
     console.log("no id"); 
    }, 
    page1:function(id1){ 
     console.log(id1); 
    }, 
    page2:function(id1,id2){ 
     console.log(id1); 
     console.log(id2); 
    } 
}); 

आशा इस मदद करता है।