/ / वर्तमान यूआरएल क्वेरी स्ट्रिंग प्राप्त करें - handlebars.js, इकट्ठा, ग्रन्ट-असेंबल

वर्तमान url क्वेरी स्ट्रिंग - handlebars.js, इकट्ठा, ग्रंट-असेंबल करें

मैं एक हैंडलबार हेल्पर लिखने की कोशिश कर रहा हूं, जो मौजूदा url क्वेरी स्ट्रिंग को थूकता है। फिर मैं उस क्वेरी स्ट्रिंग का उपयोग टेम्पलेट को पॉप्युलेट करने के लिए करूंगा। मैं html फ़ाइल पीढ़ी करने के लिए असेंबल का उपयोग कर रहा हूं।

मेरे उरोज ऐसे दिखते हैं: groups/group-details/?id=1 और मैं आईडी मूल्य पर प्राप्त करना चाहता हूं।

यहाँ मेरा सहायक है:

Handlebars.registerHelper("currentId", function() {
return document.location.search.split("?")[1].split("=")[1];
});

और मैं इसे अपने .hbs टेम्पलेट में इस तरह बुला रहा हूं:

{{currentId}}

मैं इसे थूकने के लिए उम्मीद कर रहा हूं 1 इस उदाहरण में लेकिन कुछ भी नहीं दिखाया गया है।

मुझसे कहां गलती हो रही है?

- संपादित करें -

वेब इंस्पेक्टर कंसोल में चारों ओर खुदाई करने से पता चलता है कि मेरा सहायक पंजीकृत है, लेकिन अगर मैं रिटर्न स्टेटमेंट पर ब्रेकपॉइंट लगाता हूं, तो यह कभी भी हिट नहीं होता। मुझे लगता है कि सहायक सिर्फ "निष्पादित" नहीं किया जा रहा है।

उत्तर:

जवाब के लिए 2 № 1

यदि आप "" इकट्ठा के साथ html बना रहे हैं, तो इकट्ठा हैंडलबार के साथ एक रेंडर पास कर रहा है। {{currentId}} सर्वर पर टेम्पलेट।

अगर यह ऐसा कर रहा है, तो मैं सहायक के अंदर एक त्रुटि की उम्मीद करूंगा document.location.search उपलब्ध नहीं है। जब से आप "वहाँ एक त्रुटि हो रही है, मुझे लगता है कि सहायक isn" इकट्ठा के साथ पंजीकृत नहीं है और केवल हैंडल के सामने के अंत उदाहरण के साथ। {{currentId}} हैंडलबार्स द्वारा एक मूल्य के रूप में व्याख्या की गई है और कुछ भी नहीं प्रदान करता है।

टी एल; डॉ;

फ्रंट-एंड टेम्प्लेट और बैकएंड टेम्प्लेट को मिलाते समय, आपको फ्रंट-एंड टेम्प्लेट से बचना होगा ताकि बैकएंड प्रोसेस उन्हें रेंडर न करे। {{currentId}} यह देखने के लिए कि क्या सहायक का उपयोग किया जाता है।


उत्तर № 2 के लिए 1

वास्तव में निश्चित नहीं कि आप गलत क्यों हो रहे हैं।

लेकिन, मैं यहाँ एक regex का उपयोग करूंगा।

पार्सिंग के लिए 1 से बाहर groups/group-details/?id=1

var a =  (new RegExp("/?id=(d)+"));
var v = a.exec("groups/group-details/?id=1")[1];
console.log(v);

इसके अलावा, मैंने कोशिश की

"groups/group-details/?id=1".split("?")[1].split("=")[1]

और यह लौटता है 1 ठीक।

रीजेक्स के साथ मैं क्यों जाऊंगा इसका कारण यह है कि आप पहले से ही दो स्ट्रिंग जोड़तोड़ कर रहे हैं जो शायद सबसे कुशल तरीका नहीं है।