HTML-kildekode
<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 kildekode
<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>
Her returnerer variablene loc
og loc1
begge test som resultat for URL-en ovenfor. Er dette den riktige måten?
Jeg vet at dette er et gammelt spørsmål, men det tok meg litt tid å finne ut av dette gitt den sparsomme Angular-dokumentasjonen. Den RouteProvider og routeParams er veien å gå. Ruten kobler opp URL-en til kontrolleren / visningen din, og routeParams kan sendes inn i kontrolleren.
Sjekk ut Angular seed prosjektet. I app.js finner du et eksempel for ruteleverandøren. For å bruke parametere legger du dem ganske enkelt til slik:
$routeProvider.when('/view1/:param1/:param2', {
templateUrl: 'partials/partial1.html',
controller: 'MyCtrl1'
});
Deretter injiserer du $routeParams i kontrolleren din:
.controller('MyCtrl1', ['$scope','$routeParams', function($scope, $routeParams) {
var param1 = $routeParams.param1;
var param2 = $routeParams.param2;
...
}]);
Med denne tilnærmingen kan du bruke parametere med en url som f.eks: "http://www.example.com/view1/param1/param2"
Selv om ruting faktisk er en god løsning for URL-parsing på applikasjonsnivå, kan det være lurt å bruke tjenesten "$location" på lavere nivå, som injiseres i din egen tjeneste eller kontroller:
var paramValue = $location.search().myParam;
Denne enkle syntaksen vil fungere for http://example.com/path?myParam=paramValue
. Men bare hvis du har konfigurert $locationProvider
i HTML 5-modus tidligere:
$locationProvider.html5Mode(true);
Ellers kan du ta en titt på syntaksen http://example.com/#!/path?myParam=someValue "Hashbang", som er litt mer komplisert, men som har den fordelen at den også fungerer i gamle nettlesere (som ikke er kompatible med HTML 5).
Hvis du bruker ngRoute, kan du injisere $routeParams
inn i kontrolleren din.
http://docs.angularjs.org/api/ngRoute/service/$routeParams
Hvis du bruker angular-ui-router, kan du injisere $stateParams