angularjs - कोणीय यूई-राउटर का उपयोग कर राज्य परिवर्तन के बिना यूआरएल क्वेरी पैरामीटर सेट करें
url angular-ui-router (2)
पृष्ठ को रीफ्रेश करते समय राज्य को बनाए रखने के लिए AngularJS 'UI-राउटर का उपयोग करके एक बदलते क्वेरी पैरामीटर के साथ पता बार URL को कैसे अपडेट करना चाहिए?
वर्तमान में, मैं $state.transitionTo('search', {q: 'updated search term'})
का उपयोग कर रहा हूं $state.transitionTo('search', {q: 'updated search term'})
जब भी इनपुट बदलता है, लेकिन समस्या यह है कि यह नियंत्रक को पुनः लोड करता है, विंडो को $state.transitionTo('search', {q: 'updated search term'})
देता है और किसी भी टेक्स्ट इनपुट फोकस को खो देता है।
क्या राज्यपैम अपडेट करने और विंडो यूआरएल में सिंक करने का कोई तरीका है?
मुझे परेशानी हो रही थी। ट्रांसमिशन तक जब तक मैं ui-router 0.2.14 में अपडेट नहीं हुआ। 0.2.14 इस तरह के कॉल का उपयोग करके लोकेशन बार (नियंत्रक को पुनः लोड किए बिना) में सही ढंग से बदलता है:
$state.transitionTo('search', {q: 'updated search term'}, { notify: false });
संपादित करें: आज इसके साथ कुछ और खेला, और महसूस किया कि कोणीय यूई-राउटर के पास मूल राउटरप्रोवाइडर के समान विकल्प है: "पुनः लोडऑनशर्च"।
https://github.com/angular-ui/ui-router/wiki/Quick-Reference#options-1
यह डिफ़ॉल्ट रूप से true
सेट है, लेकिन यदि आप इसे अपने राज्य पर false
पर सेट करते हैं, तो क्वेरी पैरामीटर बदले जाने पर राज्य परिवर्तन नहीं होगा। फिर आप $location.search(params);
कॉल कर सकते हैं $location.search(params);
या $location.search('param', value);
और यूआरएल बदल जाएगा, लेकिन यूई-राउटर पूरे नियंत्रक / दृश्य को फिर से निर्मित नहीं करेगा। आपको शायद ऐप के भीतर इतिहास क्रियाओं को वापस और आगे बढ़ाने के लिए रूट स्कोप पर $locationChangeStart
ईवेंट को सुनने की भी आवश्यकता होगी, क्योंकि इससे राज्य परिवर्तन भी नहीं आएंगे।
मैं पेज / रूट के शुरुआती लोड को कैप्चर करने के लिए अपने नियंत्रक के दायरे पर $stateChangeSuccess
ईवेंट भी सुन रहा हूं।
पथ परिवर्तन के साथ इस सुविधा का उपयोग करने के लिए जिथब पर कुछ चर्चा है (केवल यूआरएल परिवर्तन नहीं): https://github.com/angular-ui/ui-router/issues/125 लेकिन मैंने इसका परीक्षण नहीं किया है उपयोग केस क्वेरी स्ट्रिंग पैरामीटर के लिए विशिष्ट था।
मेरे उत्तर के पिछले संस्करण ने इस जिथब मुद्दे का उल्लेख किया:
https://github.com/angular-ui/ui-router/issues/562
लेकिन यह थोड़ा अलग मुद्दा है, विशेष रूप से गैर-मोडल राज्य बदलने के बिना किसी अन्य राज्य पर एक राज्य का एक मॉडल दिखा रहा है। मैंने उस मुद्दे में पैच की कोशिश की, लेकिन यह स्पष्ट है कि यह पूरे राज्य को यूआरएल परिवर्तन पर पुनः लोड करने से रोकने के लिए नहीं है।