Mám tabuľku obsahujúcu tlačidlo úprav na aktualizáciu záznamu. Keď prechádzam ako jediný id
na ng-href
jeho funkčná stránka a úvodná stránka formulára:
Ex: V mojom index.html
stôl
<a class="btn btn-warning" ng-href="#/provider/{{row._id}}">Edit</a>
Ale chcem odovzdať ešte jeden parameter spolu s row._id
na ng-href ako:
<a class="btn btn-warning" ng-href="#/provider/{{row._id}}/collectionName/{{collectionName}}">Edit</a>
Nefunguje to a presmerovávate na domovskú stránku.
Tu je môj kontrolór:
$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
pre smerovanie:
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"
});
}]);
Čo presne chcem urobiť, je po kliknutí na edit
tlačidlo, na ktoré by malo presmerovať form.html
s parametrom / údajmi z id
a collectionName
Akákoľvek pomoc by bola ocenená.
odpovede:
5 pre odpoveď č. 1Ak chcete v systéme použiť viac parametrov ng-href
Mali by ste tiež aktualizovať svoju adresu URL trasy v app.js
.
xml, keď ste v systéme použili viac parametrov ng-href
ale potom nefungovala žiadna trasa zodpovedajúca tejto trase otherwise
presmerovať na home
.
môžete to skúsiť.
v html:
<a class="btn btn-warning" ng-href="#/provider/{{row._id}}/collectionName/{{collectionName}}">Edit</a>
pridať trasu do app.js
Páči sa mi to
.when("/provider/:id/collectionName/:cName", {
templateUrl: "templates/provider/form.html",
controller: "YourController"
});
a v radiči je potrebné zmeniť ako:
$http.get("/providerlist/"+$routeParams.id +"/collectionName/"+ $routeParams.cName)
.success(function (response) {
alert(response);
$scope.providerList = response;
$scope.id = response["_id"];
});
trasa na strane servera by mala byť napríklad: /providerlist/:id/collectionName/:cName
1 pre odpoveď č. 2
Cesta v ceste ngRoute môže obsahovať pomenované skupiny začínajúce dvojbodkou a končiace hviezdičkou ako: meno *, Všetky znaky sú horlivo uložené v $ routeParams pod krstným menom, keď sa trasa zhoduje.
Napríklad trasy ako: / color /: color / largecode /: largecode * / upraviť
Pre túto vzorovú adresu URL: / color / brown / largecode / code / with / slashes / edit
A extrahovať:
farba: hnedá
veľký kód: kód / s / lomítkami.
Takže vo vašom prípade to bude trasa
.when("/provider/:id*/collectionName/:collectionName*", {
templateUrl: "templates/provider/form.html",
controller: "ProviderController",
controllerAs: "provider"
})
To zaistí, že aj keď sa vo výslednom odkaze href vyskytnú špeciálne znaky a lomky, budete presmerovaný na správny radič a stránku ...