/ / AngularJS: come passare più parametri al controller tramite ng-href? - javascript, angularjs, mean-stack

AngularJS: come passare più parametri al controller attraverso ng-href? - javascript, angularjs, mean-stack

Ho una tabella contenente il pulsante di modifica per aggiornare il record. Quando passo il singolo id a ng-href funziona bene e si apre la pagina del modulo:

Es: nel mio index.html tavolo

<a class="btn btn-warning" ng-href="#/provider/{{row._id}}">Edit</a>

Ma voglio passare un altro parametro insieme a row._id a ng-href come:

<a class="btn btn-warning" ng-href="#/provider/{{row._id}}/collectionName/{{collectionName}}">Edit</a>

Non funziona e reindirizza alla home page.

Ecco il mio controller:

    $timeout(function () {
if ($routeParams.id !== undefined) {
$http.get("/providerlist/"+$routeParams.id, {
params:{
id:$routeParams.id,
collectionName:$routeParams.collectionName
}
}).success(function (response) {
alert(response);
$scope.providerList = response;
$scope.id = response["_id"];
});
}
});

app.js per il routing:

var ProviderApp = angular.module("ProviderApp", ["ngRoute"])
.config(["$routeProvider", function ($routeProvider) {
$routeProvider
.when("/home", {
templateUrl: "templates/home/index.html",
controller: "HomeController",
controllerAs: "home"
})

.when("/provider", {
templateUrl: "templates/provider/index.html",
controller: "ProviderController",
controllerAs: "provider"
})
.when("/provider/:id", {
templateUrl: "templates/provider/form.html",
controller: "ProviderController",
controllerAs: "provider"
})
.otherwise({
redirectTo: "/home"
});
}]);

Ecco cosa voglio fare esattamente dopo aver cliccato su edit pulsante a cui dovrebbe reindirizzare form.html con parametro / dati di id e collectionName

Qualsiasi aiuto sarebbe apprezzato.

risposte:

5 per risposta № 1

Se desideri utilizzare più parametri in ng-href dovresti anche aggiornare l'URL del tuo percorso in app.js.

quando hai utilizzato più parametri in ng-href ma nessun percorso corrispondente a questo percorso ha funzionato otherwise percorso che reindirizza a home.

Puoi provarlo.

in html:

<a class="btn btn-warning" ng-href="#/provider/{{row._id}}/collectionName/{{collectionName}}">Edit</a>

aggiungi un percorso in app.js piace

.when("/provider/:id/collectionName/:cName", {
templateUrl: "templates/provider/form.html",
controller: "YourController"
});

e nel controller è necessario modificare come:

 $http.get("/providerlist/"+$routeParams.id +"/collectionName/"+ $routeParams.cName)
.success(function (response) {
alert(response);
$scope.providerList = response;
$scope.id = response["_id"];
});

quindi il percorso lato server dovrebbe essere come: /providerlist/:id/collectionName/:cName


1 per risposta № 2

Il percorso nel percorso ngRoute può contenere gruppi denominati che iniziano con i due punti e finiscono con una stella come: nome *, Tutti i caratteri vengono memorizzati con entusiasmo in $ routeParams sotto il nome dato quando il percorso corrisponde.

Ad esempio, percorsi come: / color /: color / largecode /: largecode * / edit

Per questo URL di esempio: / color / marrone / largecode / code / con / slash / edit

Ed estrai:

colore: Marrone

largecode: codice / con / barre.

Quindi nel tuo caso sarà l'itinerario

.when("/provider/:id*/collectionName/:collectionName*", {
templateUrl: "templates/provider/form.html",
controller: "ProviderController",
controllerAs: "provider"
})

Ciò assicurerà che anche se ci sono caratteri speciali e barre nel tuo collegamento href risultante sarai reindirizzato al controller e alla pagina corretti ...