2012-01-29 11 views
7

में हैश और गैर हैश यूआरएल कम्बाइन वहाँ किसी तरह कैसे हैश और गैर हैश Backbone.js आवेदन में यूआरएल गठबंधन करने के लिए है?Backbone.js

मैंने Backbone.history.start({pushState: true}) सेट किया है। जब उपयोगकर्ता कुछ लिंक पर क्लिक करता है, तो मैं सर्वर से JSON डेटा प्राप्त करता हूं, पृष्ठ अपडेट करता हूं, और ब्राउज़र में यूआरएल बदलने के लिए Backbone.history.navigate पर कॉल करता है (उदाहरण के लिए example.com/zlinsky/kampan/mf/ से example.com/moravskoslezsky/kampan/mf/)।
यदि उपयोगकर्ता ब्राउज़र से यूआरएल कॉपी करता है और दूसरे टैब में खुलता है, तो वह उसी पृष्ठ को देखेगा (इसलिए इस पृष्ठ को अद्यतन किया गया है इस तरह से सर्वर पर संबंधित पृष्ठ है)। यह वही है जो मैं चाहता हूं।

लेकिन अब मैं समस्या है ...

मैं भी कई <select> पेज पर है। जब उपयोगकर्ता उनमें मूल्य बदलता है, तो मैं पृष्ठ पर कुछ गतिशील परिवर्तन करता हूं (सर्वर से JSON लाने के बिना, केवल क्लाइंट पक्ष पर अपडेट किया जाता है)। मैं <select> के अनुसार यूआरएल बदलना चाहता हूं, उदाहरण के लिए example.com/moravskoslezsky/kampan/mf/#state1 (इसलिए, जब कोई यह यूआरएल भेजता है, तो दूसरी तरफ एक ही पृष्ठ को उसी राज्य में प्रेषक के रूप में देखेगा)।

मुझे रास्ता नहीं मिल सका, Backbone.js में इसे कैसे करें। अगर मैंने को Backbone.history पर सेट किया है, Router हैश टैग को अनदेखा करें।
यदि मैं pushState: false सेट करता हूं, तो मैं उपरोक्त पहले पैराग्राफ में वर्णित यूआरएल सेट करने में सक्षम नहीं हूं।

किसी भी संकेत के लिए धन्यवाद।

+0

आप समस्या का समाधान करने में सक्षम थे? मैं बिल्कुल एक ही समस्या का सामना कर रहा हूँ। जब पुशस्टेट सत्य है, तो मैं हैश भाग वाले यूआरएल मार्ग नहीं कर पा रहा हूं; हैश सिर्फ पूरी तरह अनदेखा है। – Fedor

उत्तर

2

आप कॉल कर सकते हैं: Backbone.history.navigate("/foo/bar#fragment")

लेकिन मैं यह एक अच्छा विचार है, क्योंकि यानी pushstate का समर्थन नहीं करता नहीं लगता कि, तो रीढ़ की हड्डी हैश धमाके यूआरएल उपयोग करने के लिए (यानी में) जा रहा है। Backbone.history.navigate("/foo/bar?foo=bar", true) जो आधुनिक ब्राउज़रों में हो जाएगा::

शायद तुम querystrings इस्तेमाल कर सकते हैं http://domain.tld/foo/bar?foo=bar और यानी में: http://domain.tld#/foo/bar?foo=bar