2013-04-28 10 views
12

एंगुलरजेएस नियंत्रक के भीतर यूआरएल से पैरामीटर कैसे पढ़ा जा सकता है?कोणीयजेएस: नियंत्रक के भीतर से रूट पैराम पढ़ें

मान लें कि मेरे पास http://localhost/var/:value जैसे यूआरएल है और मैं चाहता हूं कि मान /var/:value यूआरएल के लिए नियंत्रक के भीतर एक चर में संग्रहीत किया जाए।

मैं $routeParams.value और $route.current.params.value लेकिन $routeParams उपयोग करने की कोशिश की है शुरुआत में अपरिभाषित है और $route काम नहीं करता।

+0

आपका मतलब क्या है "$ रूट पैराम्स शुरुआत में अपरिभाषित है और $ मार्ग काम नहीं करता है"? क्या आप कोड साझा कर सकते हैं जहां आपने उन्हें काम करने की कोशिश की है? $$.current और $ pathParams दोनों को एक नियंत्रक प्रदाता में सही परिणाम देना चाहिए कि आपने एक नियंत्रक में मार्ग और इंजेक्शन निर्भरताओं को स्थापित किया है। –

उत्तर

15

समस्या यह है कि आप शायद $routeParams या $route को एक नियंत्रक में इंजेक्ट करते हैं जो रूट परिवर्तन होने से पहले चलाया जाता है, उदाहरण के लिए आपका मुख्य/मास्टर/पेज नियंत्रक।

यदि आप किसी विशिष्ट मार्ग के लिए नियंत्रक में $routeParams इंजेक्ट करते हैं (controller संपत्ति द्वारा निर्दिष्ट जब आप मार्ग परिभाषित करते हैं), तो यह काम करेगा, अन्यथा आप संभवतः मार्ग सेवा प्रसारण की विभिन्न घटनाओं को सुनने के बेहतर हैं।

कोशिश

$scope.$on('$routeChangeSuccess', function (ev, current, prev) { 
    // ... 
}); 
+1

आप बिल्कुल सही हैं, एक रूट परिवर्तन होने से पहले नियंत्रक चलाया जाता है क्योंकि क्लाइंट कनेक्ट होने पर सीधे यूआरएल को कॉल कर रहा है। लेकिन आपका पोस्ट कोड काम नहीं करता है क्योंकि कोई रूट परिवर्तन नहीं है। इस समस्या को हल करने के लिए कोई अन्य सुझाव? – ctitze

+3

यदि आपके क्लाइंट सीधे एंगुलरजेएस को रूटिंग को संभालने के बिना सीधे यूआरएल हिट करते हैं तो आप '$ रूट पैराम्स' का उपयोग करने में सक्षम नहीं होंगे। '$ रूट पैराम्स 'केवल तभी काम करते हैं जब आप' $ रूटप्रोवाइडर '(/ फिल्में /: शैली, {...})' का उपयोग कर रहे हों, अन्यथा आपको मानों को मैन्युअल रूप से निकालना होगा। प्रश्न: क्या आप एंगुलरजेएस रूटिंग का उपयोग कर रहे हैं या क्या आप बस यूआरएल से मूल्य निकालने का एक तरीका ढूंढ रहे हैं? – Martin

+0

मैं रूटिंग के लिए एंगुलरजेएस का उपयोग कर रहा हूं क्योंकि मैं अपने 'एनजी-व्यू' (कोणीय-व्यक्त-बीज) में अलग-अलग 'टेम्पलेट यूआरएल' लोड करना चाहता हूं। लेकिन उत्तर के लिए धन्यवाद, ऐसा लगता है कि मुझे अपनी समस्या को एक अलग दृष्टिकोण से हल करने की आवश्यकता है। – ctitze

3

आवश्यकताओं के उपयोग करने के लिए अपने कोड को बदलने के लिए: सुनिश्चित करें 'ngRoute' अपने अनुप्रयोग मॉड्यूल

Route provider set up as: http://localhost/var/:valName 

समारोह के रूप में सेट अप में है:

function functionName($scope, $routeParams){$scope.value = $routeParams.valName;} 

HTML दृश्य :

{{value['valName']}} 
संबंधित मुद्दे