2012-12-06 10 views
5

मेरा ऐप मूल रूप से कुछ फॉर्म इनपुट लेता है और परिणामों का एक सेट देता है। मैं दो मार्गोंबैकबोन.जेएस रूटिंग मार्ग पर पास की गई क्वेरी में/

routes: { 
     '': 'search', 
     'search': 'search', 
     'results/:query': 'results' 
    }, 
    results: function(query) { 
     var search = new ResultsSearchView(); 
     var grid = new GridView({ query: query }); 
    } 

क्वेरी किसी भी वर्ण शामिल हैं/विशेष रूप से (पूरी तरह से इस मामले में भी हो सकता है) वे यूआरएल और मेरे मार्ग टूट जाता है के लिए जोड़ रहे है,।

मैंने encodeURI() और encodeURIComponent() बिट का उपयोग करने का प्रयास किया है, मुझे कोई भाग्य नहीं है। आप इस तरह की चीजों को संभालने वाले लोग कैसे हैं?

उत्तर

4

जब URL निर्माण आप encodeURIComponent उपयोग कर सकते हैं मार्ग हैंडलर के अंदर /%2F के लिए और फिर decodeURIComponent कन्वर्ट करने के लिए उन्हें वापस परिवर्तित करने के लिए; एचटीएमएल इस तरह देख खत्म होगा:

<a href="#results/pancakes">no slash</a> 
<a href="#results/where%2Fis%2Fpancakes%2Fhouse">with slashes</a> 

और रूटर में तो:

routes: { 
    'results/:query': 'results' 
}, 
results: function(query) { 
    query = decodeURIComponent(query); 
    // Do useful things here... 
} 

डेमो:

मार्गों: http://jsfiddle.net/ambiguous/sbpfD/

वैकल्पिक रूप से, आप एक splat route इस्तेमाल कर सकते हैं पैरामीटर भागों, :param हो सकता है, जो एक एकल यूआरएल घटक betwe से मेल खाता है एन slashes; और विभाजन भागों *splat, जो किसी भी यूआरएल घटकों से मेल खा सकता है।

तो अपने HTML इस तरह होगा:

<a href="#results/pancakes">no slash</a> 
<a href="#results/where/is/pancakes/house">with slashes</a> 

और अपने रूटर:

routes: { 
    'results/*query': 'results' 
}, 
results: function(query) { 
    // Do useful things here... 
} 

डेमो: http://jsfiddle.net/ambiguous/awJxG/

+0

एक सूचक मार्ग का उपयोग करते हुए और यह बहुत अच्छा काम कर रहा है। सहायता के लिए धनयवाद। – Charles

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