Código fonte HTML
<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>
Código fonte 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>
Aqui, as variáveis loc
e as loc1
duas retornam teste como resultado para o URL acima. Esta é a maneira correta?
javascript
angularjs
routeparams
praveenpds
fonte
fonte
Respostas:
Sei que essa é uma pergunta antiga, mas levei algum tempo para resolver isso, dada a escassa documentação Angular. O RouteProvider e routeParams são o caminho a percorrer. A rota liga o URL ao seu Controller / View e o routeParams pode ser passado para o controlador.
Confira o projeto de semente Angular . No app.js, você encontrará um exemplo para o provedor de rotas. Para usar parâmetros, basta anexá-los assim:
Em seguida, no seu controlador, injete $ routeParams:
Com essa abordagem, você pode usar parâmetros com um URL como: " http://www.example.com/view1/param1/param2 "
fonte
});
deve ser}]);
/view/1/2?other=12
com$routeParams.other
Embora o roteamento seja realmente uma boa solução para análise de URL no nível do aplicativo, convém usar o
$location
serviço de nível mais baixo , injetado em seu próprio serviço ou controlador:Essa sintaxe simples funcionará
http://example.com/path?myParam=paramValue
. No entanto, somente se você tiver configurado o$locationProvider
no modo HTML 5 antes:Caso contrário, consulte a http://example.com/#!/path?myParam=someValue "Hashbang" sintaxe que é um pouco mais complicada, mas tem o benefício de trabalhar em navegadores antigos (não compatíveis com HTML 5) como bem.
fonte
<base href="http://example.com/en/" />
tag no seuindex.html
..config(['$locationProvider', function($locationProvider) { $locationProvider.html5Mode({ enabled: true, requireBase: false }); }])
$locationProvider
para que isso funcionasse.http://example.com/path#?someKey=someVal
, Então$location.search().someKey // => 'someVal'
Se você estiver usando o ngRoute, poderá injetar
$routeParams
no seu controladorhttp://docs.angularjs.org/api/ngRoute/service/$routeParams
Se você estiver usando o angular-ui-router, você pode injetar
$stateParams
https://github.com/angular-ui/ui-router/wiki/URL-Routing
fonte
$stateParams
mostrar parâmetros de consulta, eu tive que especificá-los na definição dos estados, como mostrado na github.com/angular-ui/ui-router/wiki/...Eu encontrei solução como usar $ location.search () para obter o parâmetro da URL
primeiro na URL você precisa colocar a sintaxe "#" antes do parâmetro como este exemplo
"http://www.example.com/page#?key=value"
e, em seguida, no controlador, coloque $ location na função e use $ location.search () para obter o parâmetro URL para
fonte
Se as respostas já postadas não ajudaram, pode-se tentar com $ location.search (). MyParam; com URLs http: //example.domain#? myParam = paramValue
fonte
fonte
Maneira simples e fácil de obter valor de URL
fonte
Ao usar angularjs com express
No meu exemplo, eu estava usando angularjs com express fazendo o roteamento, então usar $ routeParams atrapalharia o meu roteamento. Usei o seguinte código para obter o que eu esperava:
Isso recebe um modelo de URL e o caminho do local especificado. O que eu chamo de:
Juntando tudo, meu controlador é:
O resultado será:
Espero que isto seja útil a alguém!
fonte