2012-04-14 15 views
10

मुझे निम्न समस्या है। मेरी रीढ़ आवेदन का कुछ भाग की तरह यूआरएल है:बैकबोन.जेएस और अग्रणी हैश

site.ru/#profile 

जब पेज के लिए URL परिवर्तन भरी हुई है:

site.ru/profile 

तो, हैश खो गया था।

var routeStripper = /^[#\/]/; 
... 
var frag = (fragment || '').replace(routeStripper, ''); 

मैं इस कोड में URL के शुरू स्वच्छ एक हैश को समझने के रूप में: तो, मैं रीढ़ की नेविगेट समारोह में समस्या देखते हैं।

क्या समस्या को ठीक करने के लिए कोड की इस पंक्ति को हटाने का यह सही तरीका है? क्या आप इसे ठीक करने के कुछ अन्य तरीकों की सलाह दे सकते हैं।

टीआईए!

उत्तर

12

यदि आप पुशस्टेट सक्षम करते हैं तो बैकबोन केवल हैश को हटा देता है।

बदलें Backbone.history.start({pushState: true}); एक ही मुद्दा है, और हमारे साथ कुछ अन्य लोगों के होने के लिए Backbone.history.start();

http://backbonejs.org/#Router

+0

हाँ का उपयोग करें, मैं pushState = true का उपयोग करता हूं। अगर मैं पुशस्टेट को हटा देता हूं जो मैंने खोला है? – dizpers

+0

सभी पुशस्टेट नियंत्रण हैश आधारित यूआरएल का उपयोग करना है या इतिहास एपीआई का समर्थन करने वाले ब्राउज़र पर नहीं। – abraham

0

लगता Backbone.js उपयोग कर रहा है / & # डिलीमीटर के रूप में, जड़ पता & उप-निर्देशिका बाहर निकलने के लिए। / फ़िल्टरिंग की आवश्यकता है tp stau tp "खंड" प्राप्त करें। उस RegEx में बस # को हटाने का प्रयास करें, लेकिन बाकी पंक्ति को वहां छोड़ दें। (& आपने जो कोड किया है उसमें एक टिप्पणी छोड़ दो! :)

मैं एक बग रिपोर्ट भी सबमिट करूंगा, क्योंकि यह हैश के बिना लिंक भेज रहा है।

+0

बीटीडब्ल्यू, आपको यह जावास्क्रिप्ट और शायद RegEx टैग करना चाहिए। – tomByrer

+3

आप बैकबोन.history.start ({pushState: true, हैश चेंज: झूठी}) का उपयोग कर सकते हैं; pushState रखने के लिए और अभी भी हैश – TYRONEMICHAEL

0

;-) (GitHub issue देखें) हैश करने के लिए नहीं सुन रहा द्वारा

मैं अब के लिए यह ठीक करने के बाद परिवर्तन, जैसे:

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

यह मेरे लिए काम करना प्रतीत होता था।

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