2014-06-15 5 views
8

मैं चाहता हूं कि वर्तमान स्थिति परिवर्तन नेविगेशन इतिहास में सहेजा नहीं जाए। फिर जब उपयोगकर्ता 'बैक' पर क्लिक करता है, तो दृश्य छोड़ा जाएगा और पिछले पृष्ठ पर वापस जायेगा।कोणीय और यूई-राउटर के साथ, एक दृश्य के लिए नेविगेटर इतिहास को अक्षम करने के लिए कैसे करें

क्या मैं नेविगेटर इतिहास में सहेजे जाने के लिए राज्य परिवर्तन को अस्थायी रूप से अक्षम कर सकता हूं?

उत्तर

2
stackoverflow मैं और सवाल का जवाब देने की कोशिश नहीं करेगा उल्लेख है कि क्या आप के लिए पूछ रहे हैं वास्तव में एक भयानक हैक ;-)

मुझे लगता है कि आप कुछ इस तरह की जरूरत हो सकती है की भावना में

। (कोड coffeescript है)

angular 
.module 'app', ['ui.router'] 
.run ($rootScope, $state) -> 
    $rootScope.$on '$locationChangeStart', (event) => 
     if $state.is 'bad-state' 
      event.preventDefault() 
      $state.go 'good-state' 

जब स्थान परिवर्तन (आप भी $stateChangeStart इस्तेमाल कर सकते हैं) आप वर्तमान स्थिति की जाँच करें और अगर यह स्थिति है तो आप राज्य आप चाहते हैं करने के लिए जाना नहीं चाहता। event.preventDefault() मूल रूप से अनुरोधित राज्य की प्रक्रिया को प्रभावी ढंग से रोकता है।

आप एक भी गंदी संस्करण की आवश्यकता है इस तरह, हस्तांतरण प्रदर्शन करने के लिए तो आप राज्यों के बजाय स्थान यूआरएल की जांच कर सकता है और $location.url का उपयोग करें:

angular 
.module 'app', ['ui.router'] 
.run ($rootScope, $location) -> 
    $rootScope.$on '$locationChangeStart', (event, nextLocation) => 
     if nextLocation is '/bad/location' 
      event.preventDefault() 
      $location.path '/good/location' 
+0

यह वही है जो मैंने किया था, मुझे उम्मीद है कि इसे लागू करने का एक अच्छा तरीका है, जैसे नौसेना अस्थायीता को अक्षम करना। – Mavlarn

6

मैं इस जहां ui-रूटर के साथ विकल्प पैरामीटर का मानना ​​है मूल्य { location:'replace'} का इरादा है।

प्रलेखन बताते हैं:

स्थान बूलियन या "की जगह" (डिफ़ॉल्ट सच है), यदि सही, स्थान पट्टी में यूआरएल अद्यतन करेगा अगर गलत नहीं होगा। यदि स्ट्रिंग "प्रतिस्थापन" है, तो यूआरएल अपडेट करेगा और अंतिम इतिहास रिकॉर्ड को भी प्रतिस्थापित करेगा।

ऐसा लगता है कि एक समस्या है (इसे here on GitHub देखें) हालांकि तय किया जाना है।

+0

एचएमजेड मैं कई अन्य स्थानों पर आने वाले उपयोगकेस को देखता हूं: https: //github.com/driftyco/ionic/issues/1287 http://stackoverflow.com/questions/21628169/handle-state-as-new-route -इन-आयनिक-फ्रेमवर्क-साथ-कोणीय-यूई-राउटर – EeKay

+0

ऐसा लगता है कि यह एक तरीका है। मेरी ओर से बाद में कोशिश होगी। – Mavlarn

+0

वैसे, हालांकि एक विकल्प '{lication:' replace '} 'है, लेकिन यह काम नहीं कर रहा है। जैसा कि उत्तर में बताया गया है, इसके बारे में एक मुद्दा है, और अभी तक तय नहीं है। जब मैंने कोशिश की तो कम से कम 1.3.18 में तय नहीं किया गया। – Mavlarn

0

यह मेरे लिए काम किया।

$rootScope.$on('$stateChangeStart', 
function(event, toState, toParams, fromState, fromParams){ 
    event.preventDefault(); 
    window.history.forward(); 
}); 
संबंधित मुद्दे

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