का उपयोग करके पिछली बार यूआरएल को धीरे-धीरे बदलें, बैकबोन.जेएस का उपयोग करके, राउटर को उस पृष्ठ पर नेविगेट करना संभव है जहां से यह आया था? मैं उस मामले के लिए उपयोग करना चाहता हूं जहां पॉपअप दिखाई देने पर मैं अपना यूआरएल बदलता हूं, और जब मैं पॉपअप छुपाता हूं, तो मैं इसे वापस बदलना चाहता हूं। मैं बस वापस जाना नहीं चाहता, क्योंकि मैं पृष्ठभूमि पृष्ठ को उसी स्थिति में रखना चाहता हूं जैसा कि मैंने पॉपअपबैकबोन.जेएस
उत्तर
आप Backbone.Router
का विस्तार और नेविगेशन के दौरान सभी मार्गों भंडारण के द्वारा इस समस्या को हल कर सकते हैं।
class MyRouter extends Backbone.Router
constructor: (options) ->
@on "all", @storeRoute
@history = []
super options
storeRoute: ->
@history.push Backbone.history.fragment
previous: ->
if @history.length > 1
@navigate @history[@history.length-2], true
फिर, आप अपने मॉडल को खारिज करने के लिए है जब, बस MyRouter.previous()
विधि है कि यह तुम वापस पिछले "हैश" पर रीडायरेक्ट करेगा कहते हैं।
दिखाया है, आप अपने पॉपअप या ओवरले के ऑनक्लोसेवेंट में एक मार्ग ट्रिगर कर सकते हैं :
router.navigate('/lasturl/');
यह यूआरएल सेट करेगा। यदि आप दूसरे पैरा के रूप में सच हो जाते हैं, तो आप मार्ग क्रिया को निष्पादित करेंगे। अन्यथा पृष्ठ अपरिवर्तित छोड़ा जाएगा।
बेशक, लेकिन फिर सवाल यह है कि, मुझे कैसे पता चलेगा कि आखिरी यूआरएल कौन सा है? क्या बैकबोन एक उपयोगी विधि प्रदान करता है, या मुझे इसे window.history से ले जाना होगा? – user802232
मुझे लगता है कि मतेसुस्मो का जवाब अधिकतर सही है, लेकिन गारेनटे के लिए कुछ बदलावों की आवश्यकता है कि आपको हमेशा सही यूआरएल मिल रहा है जिसे आप ढूंढ रहे हैं।
सबसे पहले आप एक beforeRoute विधि सक्रिय करना मार्ग विधि ओवरराइड करने के लिए की जरूरत है:
route: (route, name, callback) =>
Backbone.Router.prototype.route.call(this, route, name, =>
@trigger('beforeRoute')
callback.apply(this, arguments)
)
तो फिर तुम घटना बाँध और इतिहास उदाहरण चर इनिशिएलाइज़:
initialize: (options) ->
@history = []
@on "beforeRoute", @storeRoute
के लिए अगला बनाने सहायक तरीकों टुकड़े को संग्रहित करना और पुनर्प्राप्त करना:
storeRoute: =>
@history.push Backbone.history.fragment
previousFragment: =>
@history[@history.length-2]
अंत में, आप एक अंतिम सहायक विधि की आवश्यकता है जिसे यूआरएल को पुनः लोड किए बिना परिणामी खंड को स्टोर करने के लिए इस्तेमाल किया जा सके। पॉप अप को बंद करते समय आपको इसका उपयोग करने की आवश्यकता है या यदि आपके पास कहीं भी नेविगेट किए बिना पॉप अप हो जाता है तो आपके इतिहास में अपेक्षित खंड नहीं होगा। ऐसा इसलिए है क्योंकि "ट्रिगर: सत्य" के बिना नेविगेट करना, ईवेंट हैंडलर को टुकड़े को स्टोर करने के लिए ट्रिगर नहीं करेगा।
changeAndStoreFragment: (fragment) =>
@navigate(fragment)
@storeRoute()
यह उत्तर प्रश्न का समाधान नहीं कर सकता है, लेकिन यह एक ही समस्या है। मैं पिछले मार्ग पर चुपचाप नेविगेट नहीं कर सका, या पीछे की ओर स्लैश की वजह से एक कस्टम मार्ग। रूट फ़ंक्शंस को ट्रिगर नहीं करने के लिए, {trigger:false}
का उपयोग करें, या false
डिफ़ॉल्ट व्यवहार के बाद से ट्रिगर का उपयोग न करें, और सुनिश्चित करें कि आपका मार्ग '#/कुछ' (स्लैश नोटिस) के बजाय #something
के साथ शुरू होता है, या बैकबोन.जेएस, राउटर भाग के अंदर regEx बदलें।
- 1. बैकबोन.जेएस
- 2. बैकबोन.जेएस
- 3. बैकबोन.जेएस
- 4. बैकबोन.जेएस
- 5. बैकबोन.जेएस
- 6. बैकबोन.जेएस
- 7. बैकबोन.जेएस
- 8. बैकबोन.जेएस
- 9. बैकबोन.जेएस
- 10. बैकबोन.जेएस
- 11. बैकबोन.जेएस
- 12. बैकबोन.जेएस
- 13. बैकबोन.जेएस
- 14. बैकबोन.जेएस
- 15. बैकबोन.जेएस
- 16. एमवीसी/बैकबोन.जेएस
- 17. बैकबोन.जेएस राउटर
- 18. बैकबोन.जेएस राउटर
- 19. ऑफ़लाइन बैकबोन.जेएस ऑफ़लाइन
- 20. बैकबोन.जेएस मॉडल उदाहरण
- 21. बैकबोन.जेएस और फॉर्मडाटा
- 22. मैं बैकबोन.जेएस रूटिंग
- 23. बैकबोन.जेएस और केकेपीएचपी
- 24. बैकबोन.जेएस और अग्रणी हैश
- 25. बैकबोन.जेएस एचटीएमएल फाइल
- 26. बैकबोन.जेएस + स्प्रिंग एमवीसी। मॉडल
- 27. बैकबोन.जेएस यूआरएल रूटिंग
- 28. बैकबोन.जेएस और पदानुक्रम/पेड़
- 29. बैकबोन.जेएस जेड और मॉडल
- 30. ट्विटर बूटस्ट्रैप और बैकबोन.जेएस
वास्तव में आप केवल छेद इतिहास – mateusmaso
धन्यवाद के बजाय अंतिम "हैश" स्टोर कर सकते हैं! ठीक वही जो मेरे द्वारा खोजा जा रहा था। – Felipe
मुझे विश्वास नहीं है कि यह गारंटी देगा कि स्टोर रूट विधि को हमेशा रूटिंग विधि से पहले बुलाया जाएगा जो इसका उपयोग कर सकता है। नतीजतन, इतिहास में संग्रहीत क्या संगत नहीं होगा। – DrewB