/ / AngularJS: Ako odovzdať viac parametrov radičovi cez ng-href? - javascript, angularjs, mean-stack

AngularJS: Ako odovzdať viac parametrov do radiča cez ng-href? - javascript, angularjs, mean-stack

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ď č. 1

Ak 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 ...