2013-08-20 33 views
10

में स्थान परिवर्तन पर AngularJS में वैश्विक स्थान परिवर्तनों का पता लगाने का कोई तरीका है, केवल एक नियंत्रक नहीं? मेरा लक्ष्य हर स्थान परिवर्तन का पता लगाने के लिए है। या परिवर्तन के लिए window.location.href देखने का कोई प्रभावी तरीका है?कोणीय

$routeChangeSuccess 

जैसा कि मैंने समझा केवल एक नियंत्रक के लिए है या मैं गलत हूं?

+2

आप एक आधार नियंत्रक कि अपने पूरे एप्लिकेशन शामिल हो सकता था, और कहा कि नियंत्रक के लिए सुनने मार्गChangeSuccess घटना। –

उत्तर

23

सबसे पहले, $routeChangeSuccess एक नियंत्रक तक ही सीमित नहीं है। इसे $rootScope से प्रसारित किया गया है जिसका अर्थ है कि इसे प्रत्येक स्कोप (या, प्रत्येक स्कोप जो $rootScope से प्राप्त होता है) पर सुना जा सकता है लेकिन यह एक विस्तृत विस्तृत कार्यक्रम है।

एक अनियंत्रित ईवेंट भी है जो $routeChangeSuccess के समान काम करता है जिसे $locationChangeSuccess कहा जाता है। अंतर यह है कि एक बार मार्ग पर एक बार सफलतापूर्वक आग लग गई है और बाद में आग लग जाती है जब यूआरएल बदल जाता है लेकिन मार्ग बदलने से पहले। ध्यान दें कि यह सभी यूआरएल परिवर्तन नहीं है, बस यूआरएल इस तरह से बदलता है कि AngularJS एप्लिकेशन इसे पंजीकृत कर सकता है (उदाहरण के लिए, $location.url() पर एक सेटर कॉल)।

बस स्पष्ट करने के लिए, $locationChangeSuccess को $rootScope से भी प्रसारित किया गया है।

दोनों के लिए, आप scope.$on('$routeChangeSuccess') या scope.$on('$locationChangeSuccess') का उपयोग करके ईवेंट को सुन सकते हैं।

1

कोणीय-यूआई-राउटर का उपयोग करने वालों के लिए, यह घटना आग नहीं जाएगी। "$ stateChangeSuccess" एंगुलर-यूआई-राउटर के लिए सही घटना है।
How to trigger UI-Router View Load events?
और भी API मार्गदर्शिका: यूआई-रूटर घटनाओं पर अधिक जानकारी के लिए, इस तो सवाल यह देखना
https://github.com/angular-ui/ui-router/wiki#state-change-events