2013-03-25 7 views
6

मेरे पास एक मार्ग है जिसमें क्वेरी पैरामीटर हैं। दृश्य को सक्रिय करते समय, क्वेरी पैरामीटर एकत्र किए जाते हैं और सर्वर साइड अनुरोध में पास किए जाते हैं। मुझे नहीं पता कि पैरामीटर क्या हैं। मैं बस उन्हें प्रसंस्करण के लिए सर्वर पर भेजता हूं।Durandal राउटर में क्वेरी पैरामीटर

मेरी व्यूमोडेल सक्रिय विधि में, संदर्भ पैरामीटर एक ऑब्जेक्ट है जिसमें क्वेरी पैरामीटर, साथ ही दो अतिरिक्त आइटम: रूटइन्फो और राउटर शामिल हैं। Durandal इन्हें क्वेरी पैरामीटर में जोड़ता है। सबसे पहले, मैं नहीं चाहता कि वे सर्वर की तरफ जाएं। दूसरा, यदि मेरे क्वेरी पैरामीटर में उन दो नाम भी शामिल हैं, तो वे ओवरराइट हो जाते हैं।

मैंने राउटर कोड को देखा है और यह पता लगाया है कि वे मेरे पैराम्स (डेक्यू रूट में) कहां जोड़े गए हैं, लेकिन अतिरिक्त को रोकने के लिए कोई रास्ता नहीं है, न ही उनके बिना मेरे क्वेरी पैरामीटर प्राप्त करने का कोई तरीका नहीं है।

क्या कोई जानता है कि मैं रूटइन्फो और राउटर के बिना क्वेरी पैरामीटर कैसे प्राप्त कर सकता हूं? और जिज्ञासा से, वे एक अलग तर्क के बजाय पहली जगह क्यों जोड़े गए हैं?

उत्तर

8

आपका अधिकार। मैं आगे बढ़ गया और आपकी कहानियों का परीक्षण किया और ऐसा लगता है कि सभी क्वेरीस्ट्रिंग पैरामीटर संदर्भ पैरामीटर पर लिखे जा रहे हैं।

इसलिए यदि आप इस तरह एक मार्ग है: अपने सक्रिय विधि के अंदर

http://www.somesite.com/#/services/?routeInfo=value1&router=value2&param1=value3

:

{ 
    routeInfo: {...}, // info object of moduleId and such 
    router: {...}, // reference to the router.js pluggin 
    param1: 'value3', 
    splat: ['?routeInfo=value1&router=value2&param1=value3'] 
} 
:

define(function() { 
    return { 
    activate: function(context) { 
     console.log(context); 
    } 
    }; 
}); 

फिर context की एक json वस्तु हो जाएगा

तो, क्वेरीस्ट्रिंग पैरामीटर टी को लिखे जा रहे हैं वह context ऑब्जेक्ट लेकिन यदि आपके क्वेरीस्ट्रिंग पैरामीटर routeInfo, router, या splat हैं तो खराब चीजें घटित होंगी। विशेष रूप से यदि यह splat है!

तो, मैं सिर्फ इसके अलावा उन पैरामीटर का उपयोग न लगता है ..

, जैसा कि आप देख सकते हैं अपने क्वेरी स्ट्रिंग पैरामीटर सूचक वस्तु को पारित कर रहे हैं। आप आसानी से क्वेरीस्ट्रिंग को पार्स कर सकते हैं:

function parsePlease(queryString) { 
    var obj = {}; 
    var splitV = queryString.split('&'); 
    for (var i = 0, max = splitV.length; i< max; i++) { 
     obj[splitV[i].split('=')[0]] = splitV[i].split('=')[1]; 
    } 
    return obj; 
} 

ऐसा कुछ। आप उस पर सुधार करना चाहेंगे .. मैंने बस इसे मार दिया।

इसके अलावा, आप window.location ऑब्जेक्ट से अपनी क्वेरी स्ट्रिंग पैराम भी प्राप्त कर सकते हैं। window.location.search ऑब्जेक्ट से इसमें ? डिलीमिनेटर के बाद सब कुछ शामिल होगा।

क्या यह आपके प्रश्नों का उत्तर देता है?

+0

जब तक मैं कुछ और गलत नहीं कर रहा हूं, ऐसा लगता है कि अगर मैं mapAuto का उपयोग भी करता हूं तो मुझे केवल स्प्लट प्रॉपर्टी मिलती है। मुझे लगता है कि मैं इसका इस्तेमाल कर सकता हूं, लेकिन यह सुनिश्चित नहीं करता कि मेरे रूटिंग के लिए और क्या होगा। किसी भी मामले में, मेरे चारों ओर से खेलने के बाद, ऐसा लगता है कि मेरे लिए सबसे अच्छी बात यह है कि window.location.search का उपयोग करें। मैं वास्तव में चाहता हूं कि स्ट्रिंग को पार्स किए बिना ऐसा करने का कोई तरीका था। –

+0

दुरंदल अपने शुरुआती चरणों में है और राउटर मॉड्यूल एक प्लगइन है। इसे कुछ समय दें .. मुझे यकीन है कि आने वाले महीनों में यह बेहतर होगा। लाइब्रेरी अभी भी सक्रिय रूप से काम कर रही है। अब आप इसका उपयोग कर रहे हैं क्योंकि यह बढ़ता है आप उतना अधिक जानकार होंगे। –

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