2013-08-07 9 views
17

यूआरएल में URL के भाग जाओ हो सकता हैAngularJS

person/show/31586 

या

person/show/31586#tab1 

यह कोणीय तरह से आईडी प्राप्त करने के लिए संभव है? रूटिंग कोणीय द्वारा प्रबंधित नहीं है। उपर्युक्त यूआरएल एक पृष्ठ लोड करता है और पृष्ठ पर बस कुछ सामग्री कोणीय द्वारा प्रबंधित की जाती है।

उत्तर

33

$location सेवा ब्राउज़र पता बार से यूआरएल पार्स करती है और यूआरएल को आपके ऐप पर उपलब्ध कराती है। चूंकि आप नियमित URL पथ और खोज सेगमेंट का उपयोग कर रहे हैं, इसलिए आपको को $locationProvider के साथ सत्य पर सेट करना होगा।

डिफ़ॉल्ट रूप से, $locationProvider हैशबैंग का उपयोग करता है, इसलिए यदि आप html5Mode को सत्य पर सेट नहीं करते हैं, तो आप URL पथ लाने का प्रयास करते समय खाली स्ट्रिंग प्राप्त करेंगे।

html5mode सेट करने के बाद, आप URL पथ लाने के लिए $location सेवा का उपयोग कर सकते हैं और पथ को संसाधित करने के लिए अपना स्वयं का नियम लिख सकते हैं।

उदाहरण के लिए, मान लेते हैं कि अपना पूरा URL लगता है: http://example.com/person/show/321

फिर main.js में आप हो सकता है:

angular.module("MyAPP",[],function($locationProvider){ 
    $locationProvider.html5Mode(true); 
}); 

function MainController($location){ 
    var pId = $location.path().split("/")[3]||"Unknown"; //path will be /person/show/321/, and array looks like: ["","person","show","321",""] 
    console.log(pId); 
} 

और index.html में आप हो सकता है:

<!DOCTYPE html> 
<html lang="en" ng-app="MyAPP"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Angular test</title> 
    </head> 
    <body ng-controller="MainController"> 
     <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script> 
     <script src="js/main.js"></script> 
    </body> 
</html> 

आशा इस आपके लिए सहायक है

+0

, $ स्थान निर्भरता इंजेक्शन का उपयोग कर के लिए एक ही लाभ है? (ऐसा लगता है कि एनजी को कुछ सुविधाजनक एपीआई प्रदान करना चाहिए ...) – ryanwebjackson

13

आप स्ट्रिंग के अंतिम टुकड़ा प्राप्त करना चाहते हैं, तो आप इस

function MainController($location){ 
    var pId = $location.path().split(/[\s/]+/).pop(); 
    console.log(pId);   //321 
} 
1

मामले किसी और यहाँ कोणीय में यूआरएल को पुन: प्राप्त करने के लिए संबंधित सहायता की मांग भूमि में की तरह कुछ कर सकते हैं। कभी कभी, एक absUrl का उपयोग करने की आवश्यकता हो सकती है: इस परिदृश्य में

console.log($location.absUrl()); 
http://127.0.0.1:3000/home