Angolare 1: richiama i parametri URL correnti

Voglio estrarre i dati dall’URL attuale e usarli nel controller. Ad esempio, ho questo URL:

app.dev/backend/surveys/2

Bit che voglio estrarre:

app.dev/backend/ : type / : id

C’è qualcosa in Angular che potrebbe aiutarmi con questo compito?

Per ottenere parametri dall’URL con ngRoute . Significa che dovrai includere angular-route.js nella tua applicazione come dipendenza. Ulteriori informazioni su come farlo nella documentazione ufficiale di ngRoute .

La soluzione per la domanda:

 // You need to add 'ngRoute' as a dependency in your app angular.module('ngApp', ['ngRoute']) .config(function ($routeProvider, $locationProvider) { // configure the routing rules here $routeProvider.when('/backend/:type/:id', { controller: 'PagesCtrl' }); // enable HTML5mode to disable hashbang urls $locationProvider.html5Mode(true); }) .controller('PagesCtrl', function ($routeParams) { console.log($routeParams.id, $routeParams.type); }); 

Se non abiliti $locationProvider.html5Mode(true); . Gli URL useranno hashbang ( /#/ ).

Ulteriori informazioni sull’instradamento possono essere trovate sulla documentazione ufficiale angular $ route API .


Nota a margine: questa domanda sta rispondendo come ottenere ciò usando ng-Route, tuttavia ti consiglio di usare l’ ui-Router per il routing. È più flessibile, offre più funzionalità, la documentazione è ottima ed è considerata la migliore libreria di routing per angular.

È ansible iniettare $routeParams sul controller e accedere a tutti i parametri utilizzati laddove la rotta è stata risolta.

Per esempio:

 // route was: app.dev/backend/:type/:id function MyCtrl($scope, $routeParams, $log) { // use the params $log.info($routeParams.type, $routeParams.id); }; 

Vedere la documentazione angular $ routeParams per ulteriori informazioni.

Meglio sarebbe stato generare url come

 app.dev/backend?type=surveys&id=2 

e quindi usare

 var type=$location.search().type; var id=$location.search().id; 

e iniettare $ posizione nel controller.

Nella configurazione del percorso in genere definisci un percorso come,

 .when('somewhere/:param1/:param2') 

È quindi ansible ottenere la route nell’object di risoluzione utilizzando $route.current.params o in un controller, $routeParams . In entrambi i casi i parametri vengono estratti utilizzando la mapping del percorso, quindi param1 ansible accedere $routeParams.param1 tramite $routeParams.param1 nel controller.

Modifica : nota anche che la mapping deve essere esatta

 /some/folder/:param1 

Abbinerà solo un singolo parametro.

 /some/folder/:param1/:param2 

Abbinerà solo due parametri.

Questo è un po ‘diverso dai percorsi laterali del server più dinamici. Ad esempio la mapping del percorso NodeJS (Express) in cui è ansible fornire solo una singola rotta con il numero X di parametri.

es: url /: id

 var sample= app.controller('sample', function ($scope, $routeParams) { $scope.init = function () { var qa_id = $routeParams.qa_id; } }); 

Basta iniettare il servizio routeParams:

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