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 № 1Se 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 ...