दिलचस्प पोस्ट
सेलेनियम आरसी के साथ Google क्रोम को कैसे चलाएं? जाँचने के लिए Regex क्या स्ट्रिंग में बेमेल कोष्ठक है? सिंगल स्क्रिप्ट में एकाधिक पेज। ओपन का उपयोग करना एनयूनिट में दो वस्तुओं के बीच समानता की तुलना करें खिड़कियों में एक कंसोल में cout को पुनर्निर्देशित करना पैरामीटर प्रकार के आधार पर ओवरलोड वेब एपीआई विधि विंडोज बैच: वैरिएबल में स्वरूपित तिथि मौजूदा शेल का निर्धारण कैसे करें, जिस पर मैं काम कर रहा हूं? क्यों कंपाइलरों स्ट्रिंग literals const करने के लिए अनुमति नहीं है const? डिज़ाइन में सीएसएस अनुकूलित स्क्रॉल पट्टी मान्यएन्टीफ़ॉर्गरीटीन उद्देश्य, स्पष्टीकरण और उदाहरण Xcode त्रुटि संदेश: "अनुप्रयोग पैकेज का निरीक्षण नहीं कर सका" उत्पादन के लिए एक रेल अनुप्रयोग बदलें Jquery $ वास्तव में वापस क्या करता है? एंड्रॉइड फ्रैग्मेंट ऑन एट्च () नापसंद

कोनेरी $ location.path काम नहीं कर रहा है

मेरे पास इस प्रश्न के समान एक सवाल है, लेकिन अलग है।

यहां मैं window.postMessage लिए एक ईवेंट श्रोता जोड़ने की कोशिश कर रहा हूं। window.postMessage

 app.run(function ($location, $window, $rootScope) { $window.addEventListener('message', function(e) { $location.path("/abc"); console.log($location.path()); // this prints "/abc" as expected $rootScope.$apply(); // this has no effect $scope = angular.element(document).scope(); // this is the same as $rootScope $scope.$apply(); // so this also has no effect }); }); 

$location.path Location.path को कोणीय द्वारा मान्यता प्राप्त नहीं किया जा रहा है

दूसरा प्रश्न यह कहता है कि मुझे दायरे पर $apply() करना चाहिए $apply() , लेकिन मेरे लिए उपलब्ध एकमात्र गुंजाइश $rootScope और $apply() कॉल करता है $apply() जो उस पर काम नहीं करता है

उत्तर पर एक टिप्पणी से पता चलता है कि एक दायरे के साथ मिल सकता है

 $scope = angular.element(document).scope() 

लेकिन यह मुझे $rootScope देता है, जो काम नहीं करता है।

मैं $location.path() में परिवर्तन को नियंत्रित करने के लिए कोणीय कैसे प्राप्त करूं? क्या इस तरह से एक message कॉलबैक पंजीकृत करने का एक बेहतर तरीका है क्योंकि मैं पथ को बदल सकता हूं?

Solutions Collecting From Web of "कोनेरी $ location.path काम नहीं कर रहा है"

आपको $apply() विधि की तरह फ़ंक्शन के रूप में अभिव्यक्ति को चलाना चाहिए

 app.run(function ($location, $window, $rootScope) { $window.addEventListener('message', function(e) { $rootScope.$apply(function() { $location.path("/abc"); console.log($location.path()); }); }); }); 

दस्तावेज़ीकरण देखें – एनजी। $ रूटस्स्कोप । स्कोप

यदि आप testability में सुधार करना चाहते हैं, $console बजाय $console उपयोग करें और उस ऑब्जेक्ट को भी इंजेक्ट करें

स्वीकृत समाधान ऐसा करने का उचित तरीका नहीं है। आदर्श रूप से आपको डाइजेस्ट चक्र के साथ हस्तक्षेप करने की ज़रूरत नहीं होती है (जो कि $ लागू है)।

मेरे अनुसार सबसे अच्छा तरीका मेनकंट्रोलर से $ location.path () कॉल कर रहा है $emit - $on Emit $emit - $on इसे मुख्य नियंत्रक को भेजने के लिए उपयोग करें और एक स्थान पर $ location.path कॉल करें। यह डायजेस्ट चक्र के साथ हस्तक्षेप किए बिना आप बिना दोष के पुनर्निर्देशित करेगा। मुझे उम्मीद है इससे किसी को सहायता मिलेगी।

$ टाइमआउट के बिना समाधान है

सिर्फ $ state.go का उपयोग करने से पहले डिफ़ॉल्ट राज्य में रीडायरेक्ट रोकें

 event.preventDefault(); $state.go('root'); 

मुझे एक ही समस्या थी, मेरी गलती थी कि मैं एनजी क्लिक डायरेक्टिव को अपने आइटम पर बुरी तरह से चला रहा था।

खराब उदाहरण:

 <a **href="#"** ng-click="myFunctionChangeLocationPath()">... 

उदाहरण अच्छी तरह से:

 <a ng-click="myFunctionChangeLocationPath()">... 

और इसलिए आप समस्या को ठीक कर सकते हैं!