2012-02-20 16 views
7

यह एक बहुत ही आसान सवाल है, एक दृश्य में, मैं एक बटन पर 'क्लिक' ईवेंट बांधता हूं, जब उस ईवेंट पर क्लिक किया जाता है, तो मैं एक बिल्कुल नए पेज पर रीडायरेक्ट करना चाहता हूं (उदाहरण के लिए कोई मार्ग नहीं)।रीढ़ की हड्डी किसी अन्य पृष्ठ पर जाएं

उदा।

events : {  
    "click .button" : 'redirect' 
}, 
redirect : { 
    window.location('otherlink'); 
} 

मैं विंडो.लोकेशन का उपयोग कर सकता हूं, लेकिन ऐसा लगता है कि गलत तरीका है? किसी भी विचार की सराहना की?

उत्तर

2

मैं बस एक साधारण <a href="otherlink">Link Title</a> का उपयोग करता हूं। यदि लिंक गतिशील है तो मैं लिंक प्रस्तुत करने और उसके राज्य और href को प्रबंधित करने के लिए एक दृश्य पर भरोसा करता हूं।

माध्यमिक पेज का उपयोग करें और ईवेंट हैंडलर event.preventDefault() या परहेज बिना false वापस जाने के लिए आप दे उपयोगकर्ता जाना से पहले कुछ करने के लिए की जरूरत है।

13

बैकबोन में 'राउटर' है (जो मूल रूप से मुझे नियंत्रक के रूप में जाना जाता है)। आप इसे नेविगेशन करने के लिए उपयोग कर सकते हैं। उदाहरण के लिए:

var MyApp = new Backbone.Router(); 
MyApp.navigate('newPage', {trigger: true}); 

ट्रिगर सुनिश्चित करता है कि यदि आप कहानियों का उपयोग कर रहे हैं तो एक ईवेंट फेंक दिया जाता है।

आप बैकबोन के इतिहास के साथ राउटर को टीम बना सकते हैं और एक बहुत ही बढ़िया एक पेज एप्लिकेशन बहुत आसानी से बना सकते हैं।

संपादित करें: कोई बात नहीं, मैं बस फिर से पढ़ता हूं कि आप एक मार्ग का उपयोग नहीं करना चाहते थे। मेरे दो सेंट - आपके लिए नेविगेशन करने के लिए एक रैपर बनाएं। मुझे बस कुछ हफ्ते पहले एक बहुत बड़ा जावास्क्रिप्ट एप्लिकेशन रिफैक्टर करना पड़ा, एक सौ या तो खिड़की लेना। स्थान ताकि यह यूनिट परीक्षण किया जा सके। इतना मजेदार नहीं है। अर्थात:

MyApp = { 
    navigate: function (url) { window.location = url; } 
} 

अब आप वास्तव में, इकाई परीक्षण कर सकते हैं के रूप में आप कुछ है कि कुछ भी नहीं है जब कहा जाता है करता है के साथ MyApp.navigate ओवरराइड कर सकते हैं। यदि आवश्यक हो तो आपको व्यवसाय तर्क में भी जोड़ सकते हैं .. या फ़िल्टर .. या कुछ और .. बिना शेष एप्लिकेशन को परेशान करने की आवश्यकता के। उदाहरण के लिए, यदि यूआरएल साइट के बाहर है, तो इसे उसी पृष्ठ में दिखाने के बजाय इसे एक नई विंडो में खोलें।

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