2012-12-05 7 views
6

में बैकबोन राउटर मैं कुछ प्रारंभिक तरीकों को आग लगाने के लिए बैकबोन.जेएस राउटर का उपयोग कर रहा हूं जब उपयोगकर्ता कुछ यूआरएल मार्गों को हिट करता है। इसलिए /posts/1 पर एक वेनिला एंकर टैग के माध्यम से मेरे बैकबोन राउटर में /posts/:id के साथ जो भी कॉलबैक जुड़ा हुआ है उसे आग लगाना चाहिए। Backbone.history.start({ pushState : true }) सेट होने पर यह आधुनिक ब्राउज़र में ठीक काम करता है। हालांकि, आईई में, /posts/1 को हिट करने का प्रयास करने वाले उपयोगकर्ता को /#posts/1 पर रीडायरेक्ट किया जाएगा, जो कि एक अर्थहीन हैश स्ट्रिंग वाला मेरा होम पेज है।आईई

स्पष्ट होने के लिए, मुझे pushState की आवश्यकता नहीं है। मैं ब्राउज़र इतिहास में पुश यूआरएल की कोशिश नहीं कर रहा हूं। मैं बस उन्हें पढ़ने की कोशिश कर रहा हूं, फिर एक कॉलबैक आग लगाना, जो कि किसी भी ब्राउज़र में व्यवहार्य होना चाहिए।

सरल कार्यक्षमता की तरह लगता है लेकिन मैं स्टंप हो गया हूं।

धन्यवाद!

+0

क्या आपको यूआरएल/पोस्ट/1 का जवाब देने के लिए अपने सर्वर की आवश्यकता है, और क्या यह आपके ऐप के लिए एक अलग पृष्ठ माना जाता है? क्या आप सिर्फ एक्सएचआर में पोस्ट जानकारी खींच सकते हैं और इसे पेज पर प्रदर्शित कर सकते हैं? – MrGrigg

+0

मुझे लगता है कि आपको कुछ कोड पोस्ट करने की आवश्यकता है - यह बताने में थोड़ा मुश्किल है कि आपका क्या मतलब है। यूआरएल खंड में रीडायरेक्ट उन ब्राउज़रों के लिए सामान्य फॉलबैक व्यवहार है जो पुश-स्टेट का समर्थन नहीं करते हैं। क्या आप कह रहे हैं कि उन मामलों में मार्ग सही ढंग से हिट नहीं हो रहा है? – McGarnagle

उत्तर

7

मैं यहां अपने प्रश्न का उत्तर दे सकता हूं।

+0

आप वास्तव में उस उत्पादन के साथ जा रहे हैं "// हमारी छल तोड़ देगा।" टिप्पणी? जबरदस्त हंसी! बहुत अजीब। किसी भी तरह, खुशी है कि आपने इसे समझ लिया। –

+2

मेरा उत्पादन निर्माण सभी टिप्पणियों को स्ट्रिप्स करता है। – Squirkle

0

यह मेरे लिए काम किया: सुविधा का वह प्रकार मैं यहाँ की जरूरत नीचे दिए तरीक़े हासिल किया जा सकता है Backbone.history.start ({जड़: '/ my_app_dir_here /'});

0

यदि आपको ब्राउज़र में AJAX पृष्ठ लोड की परवाह नहीं है जो pushState का समर्थन नहीं करते हैं, तो {hashChange: false} विकल्प का उपयोग करें। जब भी मार्ग बदलता है तो इससे हार्ड पेज लोड हो जाएगा।

उदा

आप pushState उपयोग करने के लिए है, लेकिन ब्राउज़रों कि समर्थन नहीं करते यह मूल रूप से पूरे पृष्ठ के बजाय ताज़ा करता है का उपयोग करें चाहते हैं, तो आप जोड़ सकते हैं:

Backbone.history.start({ pushState: true, hashChange:false });

Backbone.js डॉक्स से

विकल्पों में {हैश चेंज: झूठी}।

+1

ध्यान दें कि उपरोक्त स्वीकृत उत्तर बैकबोन संस्करण में किसी समस्या पर लागू होता है जो अब दो साल से अधिक पुराना है। उपरोक्त समस्या अब मौजूद नहीं है। – Squirkle