सेवा के लिए $locationChangeSuccess
ईवेंट देखने के लिए रूट सिस्टम का सामान्य संचालन है और फिर एक मार्ग लोड करना शुरू करें। जब यह टेम्पलेट लोड हो रहा है, संकल्प चरणों का पालन कर रहा है और नियंत्रक को तुरंत चालू कर रहा है तो बदले में $routeChangeSuccess
ईवेंट प्रसारित करता है। $routeChangeSuccess
की निगरानी ng-view
निर्देश द्वारा की जाती है, और इसी तरह यह नया मार्ग तैयार होने के बाद टेम्पलेट्स और स्कॉप्स को स्वैप करना जानता है।
ऊपर कहा के सभी के साथ
, इसे अद्यतन करने के दृश्य दिखाने के लिए वर्तमान मार्ग को अद्यतन करने और मार्ग परिवर्तन घटना उत्सर्जक द्वारा आवेदन कोड $route
सेवा के व्यवहार का अनुकरण करने के लिए काम कर सकते हैं:
var errorRoute = $route.routes[null]; // assuming the "otherwise" route is the 404
// a route instance is an object that inherits from the route and adds
// new properties representing the routeParams and locals.
var errorRouteInstance = angular.inherit(
errorRoute,
{
params: {},
pathParams: {},
}
);
// The $route service depends on this being set so it can recover the route
// for a given route instance.
errorRouteInstance.$$route = errorRoute;
var last = $route.current;
$route.current = errorRouteInstance;
// the ng-view code doesn't actually care about the parameters here,
// since it goes straight to $route.current, but we should include
// them anyway since other code might be listening for this event
// and depending on these params to behave as documented.
$rootScope.broadcast('$routeChangeSuccess', errorRoute, last);
उपरोक्त मानते हैं कि आपके "अन्यथा" मार्ग में कोई "हल" चरण नहीं है। यह भी मानता है कि यह किसी भी $routeParams
की अपेक्षा नहीं करता है, जो निश्चित रूप से "अन्यथा" मार्ग के लिए सच है लेकिन यदि आप एक अलग मार्ग का उपयोग करते हैं तो यह सच नहीं हो सकता है।
यह स्पष्ट नहीं है कि उपरोक्त का कार्यान्वयन विवरण बनाम इंटरफ़ेस के आधार पर क्या है। $routeChangeSuccess
घटना निश्चित रूप से प्रलेखित है, लेकिन $$route
मार्ग उदाहरण की संपत्ति मार्ग प्रणाली का एक कार्यान्वयन विस्तार प्रतीत होता है जो इसके डबल-डॉलर-चिह्न नाम दिया गया है। कुंजी null
के साथ मार्ग तालिका में "अन्यथा" मार्ग रखा गया है, यह विवरण भी एक कार्यान्वयन विस्तार है। तो इन सभी के साथ, यह व्यवहार AngularJS के भविष्य के संस्करणों में कार्यात्मक नहीं रह सकता है।
अधिक जानकारी के लिए आप the ng-view
code that handles this event का संदर्भ दे सकते हैं, जो अंत में उपर्युक्त कोड the event emitting code के साथ कृपया उपर्युक्त उदाहरण के आधार के रूप में उपयोग करने का प्रयास कर रहा है। जैसा कि आप इन लिंक से अनुमान लगा सकते हैं, इस पोस्ट की जानकारी AngularJS की नवीनतम मास्टर शाखा से ली गई है, जो लेखन के समय 1.2.0-स्नैपशॉट के रूप में लेबल किया गया है।
स्रोत
2013-10-04 01:22:14
क्या आप प्रतिस्थापन विधि का उपयोग करके कह रहे हैं, आप पेज पर अन्य राज्य को बदले बिना यूआरएल अपडेट कर सकते हैं? मेरा मतलब यूआरएल बदलने के पूरी तरह से कॉस्मेटिक प्रभाव के मामले में है? क्योंकि यह वही है जो पृष्ठों को ओवरले (सही यूआरएल के साथ) समान संभावनाओं की संभावना की अनुमति देता है। – CMCDragonkai
मैंने कुछ समय पहले लिखा था, लेकिन मुझे लगता है कि यूआरएल परिवर्तन अभी भी कोणीय घटना को फिर से शुरू करने के लिए ट्रिगर करता है लेकिन यह ब्राउज़र इतिहास में दिखने से रोकता है, इसलिए कम से कम आपका बैक बटन अभी भी काम करता है। – thrashr888
अच्छा। यह '.search()' – vtortola