मेरी गलती यह मान रही थी कि रीढ़ की हड्डी में ऐसा करने का एक विशेष, अंतर्निहित तरीका था। नहीं है
सीधे शब्दों में कोड
window.history.pushState('object or string', 'Title', '/new-url');
की निम्न पंक्ति अपने ब्राउज़र के यूआरएल पृष्ठ पुनः लोड करने के बिना परिवर्तन के कारण होगा चल रहा है। आप अभी अपने ब्राउज़र में जावास्क्रिप्ट कंसोल खोल सकते हैं और इसे इस पेज से आजमा सकते हैं। This article बताता है कि यह अधिक विस्तार से कैसे काम करता है (जैसा कि this SO post में उल्लेख किया गया है)।
bindEvents:() ->
$(document).on('click', 'a', @pushstateClick)
pushstateClick: (e) ->
href = e.target.href || $(e.target).parents('a')[0].href
if MyApp.isOutsideLink(href) == false
if e.metaKey
#don't do anything if the user is holding down ctrl or cmd;
#let the link open up in a new tab
else
e.preventDefault()
window.history.pushState('', '', href);
Backbone.history.checkUrl()
अधिक जानकारी के लिए this post देखें:
अब मैं सिर्फ दस्तावेज़ ऑब्जेक्ट के लिए निम्न इवेंट (मैं एक ही पृष्ठ साइट चल रहा हूँ) के लिए बाध्य कर दिया है।
ध्यान दें कि आप Backbone.history.start() पर अपने कॉल पर pushstate: true
विकल्प को पार कर सकते हैं, लेकिन यह केवल इसे बनाता है ताकि किसी निश्चित पृष्ठ पर सीधे नेविगेट किया जा सके (उदाहरण के लिए example.com/exampleuser/followers) एक ट्रिगर करेगा बस कहीं भी अग्रणी होने के बजाय रीढ़ की हड्डी मार्ग।
स्रोत
2013-07-10 10:56:23
रीढ़ की हड्डी के मार्ग को ट्रिगर करने के लिए आप 'window.location ='/#/'+ page_uri;' भी कॉल कर सकते हैं। –
@Sven यहां हालांकि मेरी चिंता वास्तविक मार्गों के साथ काम कर रही है - यानि '#' –
'बैकबोन' राउटर के बिना रूटिंग '[नेविगेट' विधि] (http://backbonejs.org/#Router-navigate) संस्करण 0.9.0 के बाद से। –