2013-06-18 28 views
7

के अंदर काम नहीं कर रहा है मैं एक कोणीय जेएस निर्देश के भीतर से $location.path अद्यतन करने की कोशिश कर रहा हूं। यह काम नहीं कर रहा है जैसा कि मैं उम्मीद करता हूं, ब्राउज़र ब्राउज़र में प्रदर्शित यूआरएल को अपडेट करना और मेरे पेज पर अलग-अलग सामग्री दिखाना है। कंसोल में देखे गए अनुसार, मेरे कार्यों को निश्चित रूप से सही मानों के साथ बुलाया जा रहा है। मुझे लगता है कि $location.path का कुछ प्रभाव हो सकता है, क्योंकि जब मैं लिंक पर क्लिक करता हूं, तो कुछ अतिरिक्त कार्यों को बुलाया जाता है जिसे नए पेज पर बुलाया जाएगा, केवल नया पृष्ठ कभी प्रदर्शित नहीं होता है। जब मैं नियंत्रक के भीतर $location.path का उपयोग करता हूं, तो यह अपेक्षा के अनुसार काम करता है, लेकिन मेरे निर्देश में नहीं।

<div detail-link="/comments?post={{post.postId}}" ng-click="clickDetailLink()"></div> 

यहाँ के निर्देश की परिभाषा (CoffeeScript में) है::

directives.directive 'detailLink', ['$location', ($location) -> 
    return (scope, element, attrs) -> 
     scope.clickDetailLink = -> 
      console.log "loading " + scope.detailLinkHref 
      $location.path scope.detailLinkHref 

     attrs.$observe 'detailLink', (value) -> 
      console.log "set detail link to " + value 
      scope.detailLinkHref = value 
] 

मैं एक सुराग क्या यहाँ हो रहा है ... मेरी $routeProvider की स्थापना की है है

यहाँ मेरी निर्देश के लिए HTML है /comments को संभालने के लिए, लेकिन यहां मैं मार्ग पर एक क्वेरी स्ट्रिंग जोड़ने की कोशिश कर रहा हूं। यदि मैं नियमित <a href="#/comments?post={{post.postId}}"> का उपयोग करता हूं, तो यह ठीक काम करता है, लेकिन किसी भी तरह से $location.path के माध्यम से एक ही मार्ग को सेट करना काम नहीं कर रहा है। यह इस बात पर ध्यान दिए बिना कि यह कोड नियंत्रक या निर्देश में है या नहीं।

उत्तर

0

समस्या यह है कि कोणीय $routeProvider एक क्वेरी स्ट्रिंग के साथ पथ से मेल नहीं खाता है, जैसा कि मैं प्रदान कर रहा था, इसलिए यह मेरे मूल पृष्ठ से फिर से मेल खाता था और इसे पुनः लोड कर रहा था। Similar solution here. हालांकि, यह एक अजीब लक्षण है, हालांकि।

5

scope.$apply आज़माएं? ($

+0

हम्म, हाँ। यह उस समस्या को हल करता है, लेकिन यह अभी भी असली मुद्दे को हल नहीं करता है। अब मेरे पास पहले से ही प्रगति पर '$ लागू है '। इसे '$ टाइमआउट' में लपेटकर "पहले से ही प्रगति" बिट को ठीक करता है लेकिन अभी भी पथ को अपडेट नहीं करता है। मैं अपना प्रश्न संपादित करूंगा .. धन्यवाद! – jab

+0

आप $ लॉग में भी देखना चाहते हैं। –

+0

आपको यह सब अपने नियंत्रक में करने में सक्षम होना चाहिए। –

0

गुंजाइश। $ मेरे लिए काम किया। पहले इसे आजमाएं।

0

$location.path किसी भी param का समर्थन नहीं करता है।

इसके बजाय $location.url का उपयोग करें।

संबंधित मुद्दे