मैं जिस समस्या का सामना कर रहा हूं वह मूर्त हो सकती है, लेकिन चूंकि गुग्लिंग ने मुझे इस सवाल पर लाया, इसलिए यह उचित हो सकता है। समस्या यूआई राउटर का उपयोग करते समय मेरे लिए अपने बदसूरत सिर को उठाती है, लेकिन केवल जब मैं पृष्ठ को ब्राउज़र रीफ्रेश बटन के साथ ताज़ा करने का प्रयास करता हूं। एप्लिकेशन को एक माता-पिता अमूर्त राज्य के साथ यूआई राउटर का उपयोग करता है, और फिर बच्चे माता-पिता से कहता है। एप्लिकेशन run()
फ़ंक्शन पर, एक $state.go('...child-state...')
कमांड है। मूल स्थिति एक का उपयोग करती है resolve
, और पहले मुझे लगा कि शायद एक बच्चा नियंत्रक दो बार निष्पादित कर रहा है।
URL को हैश किए जाने से पहले सब कुछ ठीक है।
www.someoldwebaddress.org
फिर एक बार यूआर राउटर द्वारा यूआरएल को संशोधित किया गया है,
www.someoldwebaddress.org#/childstate
... और फिर जब मैं पृष्ठ को ब्राउज़र रिफ्रेश बटन के साथ ताज़ा करता हूं , तो $stateChangeStart
दो बार आग लग जाती है, और हर बार इंगित करता है childstate
।
resolve
माता-पिता स्थिति पर क्या दो बार फायरिंग कर रहा है।
शायद यह एक कीचड़ है; इसकी परवाह किए बिना, यह मेरे लिए समस्या को खत्म करने के लिए प्रकट होता है: कोड के क्षेत्र में जहां $stateProvider
पहली बार आह्वान किया गया है, पहले यह देखने के लिए जांचें कि क्या window.location.hash एक रिक्त स्ट्रिंग है। अगर यह है, सब अच्छा है; यदि यह नहीं है, तो window.location.hash को खाली स्ट्रिंग पर सेट करें । तब ऐसा लगता है कि $state
केवल दो बार के बजाय एक बार कहीं जाने की कोशिश करता है।
इसके अलावा, अगर आप ऐप के डिफॉल्ट पर भरोसा नहीं करना चाहते हैं run
और state.go(...)
, आप हैश वैल्यू पर कब्जा करने की कोशिश कर सकते हैं और हैश वैल्यू का इस्तेमाल करके बच्चे की स्थिति का पता लगा सकते हैं, जो आप पेज रिफ्रेश करने से पहले थे, और अपने क्षेत्र में एक शर्त जोड़ें कोड जहां आप सेट करें state.go(...)
।
ng-app
मैन्युअल बूटस्ट्रैप के साथ और स्वचालित रूप से इसे इनिशियलाइज़ करके) शुरू नहीं कर रहे हैं । यह भी जांचें कि क्या आपने अपने नियंत्रक को कई तत्वों से जोड़ा है (एनजी-नियंत्रक के साथ)।