2012-08-01 9 views
177

HTML स्रोत कोड का उपयोग करदोनों <em>परीक्षण</em> लौट ऊपर URL के लिए परिणाम के रूप में AngularJS

<div ng-app=""> 
    <div ng-controller="test"> 
     <div ng-address-bar browser="html5"></div> 
     <br><br> 
     $location.url() = {{$location.url()}}<br> 
     $location.search() = {{$location.search('keyword')}}<br> 
     $location.hash() = {{$location.hash()}}<br>  
     keyword valus is={{loc}} and ={{loc1}} 
    </div> 
</div> 

AngularJS स्रोत कोड

<script> 
function test($scope, $location) { 
    $scope.$location = $location; 
    $scope.ur = $scope.$location.url('www.html.com/x.html?keyword=test#/x/u'); 
    $scope.loc1 = $scope.$location.search().keyword ;  
    if($location.url().indexOf('keyword') > -1){  
     $scope.loc= $location.url().split('=')[1]; 
     $scope.loc = $scope.loc.split("#")[0]   
    } 
    } 
</script> 

यहाँ चर loc और loc1 url पैरामीटर प्राप्त करने के लिए कैसे। क्या यह सही तरीका है?

+1

आप [$ रूट पैराम्स] (http://docs.angularjs.org/api/ng.$routeParams) को देखना चाह सकते हैं। –

+0

यह स्पष्ट नहीं है कि आप यहां क्या पूछ रहे हैं ... $ रूट पैराम और $ स्थान # विधियों के दस्तावेज़ आपको – deck

+7

शुरू करना चाहिए, कृपया मतदान करते समय टिप्पणी जोड़ने पर विचार करें ताकि प्रश्न में सुधार किया जा सके। धन्यवाद। – praveenpds

उत्तर

290

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मुझे इसे अलग करने के लिए कुछ समय लगता है, जो स्पंज एंगुलर दस्तावेज़ों को देखते हैं। रूटप्रोवाइडर और रूट पैराम्स जाने का रास्ता है। मार्ग यूआरएल को आपके कंट्रोलर/व्यू पर पहुंचाता है और मार्ग पैराम नियंत्रक में पास किया जा सकता है।

Angular seed प्रोजेक्ट देखें। App.js के भीतर आपको रूट प्रदाता के लिए एक उदाहरण मिलेगा। पैरामीटर का उपयोग करने के लिए बस इस तरह से उन्हें संलग्न:

$routeProvider.when('/view1/:param1/:param2', { 
    templateUrl: 'partials/partial1.html',  
    controller: 'MyCtrl1' 
}); 
फिर अपने नियंत्रक इंजेक्षन $ routeParams में

:

.controller('MyCtrl1', ['$scope','$routeParams', function($scope, $routeParams) { 
    var param1 = $routeParams.param1; 
    var param2 = $routeParams.param2; 
    ... 
}]); 
+2

ध्यान दें कि इस उदाहरण की अंतिम पंक्ति '' '});' '' '' '' '} होना चाहिए);' '' –

+39

क्वेरी स्ट्रिंग फॉर्म '/ व्यू/1/2 में अन्य मनमानी पैराम भी प्राप्त कर सकते हैं? अन्य = 12' '$ रूट के साथ पैरामर्स.दर' – DavidC

+0

मुझे लगता है कि आपके नियंत्रक में 'var param1' दोहराया गया है। मैं इतना आसान परिवर्तन संपादित नहीं कर सका। – Tom

142

मार्ग जबकि वास्तव में आवेदन-स्तरीय URL पार्स लिए एक अच्छा समाधान है, तो आप उपयोग कर सकते हैं अधिक निम्न स्तर $location सेवा, अपनी खुद की सेवा या नियंत्रक में इंजेक्शन के रूप में:

var paramValue = $location.search().myParam; 

यह सरल वाक्य रचना http://example.com/path?myParam=paramValue के लिए काम करेंगे।

$locationProvider.html5Mode(true); 

अन्यथा http://example.com/#!/path?myParam=someValue "Hashbang" वाक्य रचना जो थोड़ा अधिक जटिल है पर एक नजर है, लेकिन (पुराने ब्राउज़रों पर काम का लाभ: हालांकि, केवल यदि आप एचटीएमएल 5 मोड में $locationProvider से पहले से कॉन्फ़िगर किया गया गैर-एचटीएमएल 5 संगत) साथ ही साथ।

+13

ऐसा लगता है कि आपको $ locationProvider.html5mode (true) को मॉड्यूल कॉन्फ़िगरेशन के रूप में जोड़ना होगा: angular.module ("myApp", [])। कॉन्फ़िगरेशन (फ़ंक्शन ($ स्थान प्रदाता) { $ locationProvider.html5 मोड (सत्य); }); – sq1020

+4

और html5Mode को आपके 'index.html' में '' टैग की आवश्यकता है। – cespon

+1

मुझे आपके समाधान के बारे में क्या पसंद है यह है कि आप वस्तुओं को भी पास कर सकते हैं, और आप उन्हें ऑब्जेक्ट के रूप में प्राप्त कर सकते हैं। – Shilan

27

आप ngRoute का उपयोग कर रहे हैं, तो आप अपने नियंत्रक में $routeParams इंजेक्षन कर सकते हैं

http://docs.angularjs.org/api/ngRoute/service/$routeParams

आप कोणीय-ui रूटर का उपयोग कर रहे हैं, तो आप इंजेक्षन कर सकते हैं $stateParams

https://github.com/angular-ui/ui-router/wiki/URL-Routing

+1

'$ stateParams' लिए someVal'' क्वेरी पैरामीटर को दिखाने के लिए, मुझे राज्यों को परिभाषित करते समय उन्हें निर्दिष्ट करना था, जैसा कि https://github.com/angular-ui/ui-router/wiki/URL-Routing#query-parameters – Parziphal

1

यदि पहले से पोस्ट किए गए उत्तरों की मदद नहीं की गई है, तो कोई $ location.search()। MyParam के साथ प्रयास कर सकता है; यूआरएल http://example.domain#?myParam=paramValue

+0

में दिखाया गया है, यह यहां पर दूसरा सबसे अधिक वोट दिया गया समाधान है ... और इस से 3 साल पहले पोस्ट किया ... https://stackoverflow.com/a/19481865/3578036 – JustCarty