У мене є таблиця з кнопкою редагування, щоб оновити запис. Коли я пройду сингл id
до ng-href
його правильна робота та сторінка відкриття форми:
Приклад: у моєму index.html
стіл
<a class="btn btn-warning" ng-href="#/provider/{{row._id}}">Edit</a>
Але я хочу здати ще один параметр row._id
до ng-href, як:
<a class="btn btn-warning" ng-href="#/provider/{{row._id}}/collectionName/{{collectionName}}">Edit</a>
Його не працює і переспрямовує на домашню сторінку.
Ось мій контролер:
$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
для маршрутизації:
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"
});
}]);
Ось що саме я хочу зробити, після натискання edit
кнопка повинна переадресовувати на form.html
з параметром / data of id
і collectionName
Будь-яка допомога буде вдячна.
Відповіді:
5 за відповідь № 1Якщо ви хочете використовувати декілька параметрів у ng-href
ви також повинні оновити URL маршруту в app.js
.
коли ви використовували декілька параметрів у ng-href
але маршрут, що відповідає цьому маршруту, не працював otherwise
маршрут, який переспрямовує на home
.
Ви можете спробувати це.
в html:
<a class="btn btn-warning" ng-href="#/provider/{{row._id}}/collectionName/{{collectionName}}">Edit</a>
додати маршрут у app.js
люблю
.when("/provider/:id/collectionName/:cName", {
templateUrl: "templates/provider/form.html",
controller: "YourController"
});
і в контролері потрібно змінити, як:
$http.get("/providerlist/"+$routeParams.id +"/collectionName/"+ $routeParams.cName)
.success(function (response) {
alert(response);
$scope.providerList = response;
$scope.id = response["_id"];
});
тому шлях на стороні сервера повинен бути таким: /providerlist/:id/collectionName/:cName
1 для відповіді № 2
Шлях в шляху ngRoute може містити імена груп, що починаються з двокрапки та закінчуються зірочкою, такими як: ім'я *, Всі символи охоче зберігаються в $ routeParams під іменем, коли маршрут збігається.
Наприклад, маршрути, такі як: / color /: color / largecode /: largecode * / edit
Для цього зразка URL: / color / brown / largecode / code / with / slashes / edit
І екстракт:
колір: коричневий
великакодекс: код / з / косі риси.
Отже, у вашому випадку це буде Маршрут
.when("/provider/:id*/collectionName/:collectionName*", {
templateUrl: "templates/provider/form.html",
controller: "ProviderController",
controllerAs: "provider"
})
Це забезпечить, що навіть у випадку, якщо у вашій результуючої посилання href є спеціальні символи та прямі косу риси, ви переадресовуєтесь на відповідний контролер і сторінку ...