Я могу успешно использовать динамические маршруты. Я также хотел бы НЕ разделять функциональность CRUD в моих разных контроллерах (т. е. хранить CRUD в одном контроллере для каждого объекта).
По этому вопросу я изменил свои маршруты Используя тот же контроллер для всех операций CRUD (похожих на Rails), добавив разрешение по рекомендации Стьюи:
Я понял это, но SO не позволяет мне опубликовать решение ниже, поэтому вот оно:
<сильный>1. Маршруты
angular.module('anuRoutes', [])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', { templateUrl: '/App_Angular/partials/Common/Welcome.html' });
$routeProvider.when('/:name', {
templateUrl: '/App_Angular/partials/Common/Welcome.html',
controller: PagesCtrl,
action: 'list'
});
$routeProvider.when('/:name/:id', {
templateUrl: '/App_Angular/partials/Common/Welcome.html',
controller: PagesCtrl,
action: 'show'
});
$routeProvider.when('/:name/new', {
templateUrl: '/App_Angular/partials/Common/Welcome.html',
controller: PagesCtrl,
action: 'new'
});
$routeProvider.when('/:name/:id/edit', {
templateUrl: '/App_Angular/partials/Common/Welcome.html',
controller: PagesCtrl,
action: 'edit'
});
$routeProvider.otherwise({ redirectTo: '/App_Angular/partials/Common/Welcome.html' });
}]);
<сильный>2. Контроллер страниц:
function PagesCtrl($scope, $http, $route, $routeParams, $compile, anuCache) {
var pageName = ($routeParams.name).replace("_", "/");
console.log('name:' + pageName);
$route.current.templateUrl = '/App_Angular/partials/' + pageName + ".html";
});
<сильный>3. Пассажирский контролер:
angular.module('anuPassengerVehicles', [])
.controller('PassengerVehiclesCtrl', функция ($scope, $timeout, PassVehSvc, $route) {
$scope.ControllerName = "PassengerVehiclesCtrl";
$scope.PassVehs = [];
var crudAction = $route.current.action;
if(crudAction === 'list'){
PassVehSvc.GetPassVehs().
then(function(config, data, headers, status) {
$scope.PassVehs = arguments[0].data;
// console.log(arguments[0].data);
}
if(crudAction === 'edit'){
.....
}
if(crudAction === 'new'){
.....
}
if(crudAction === 'show'){
.....
}
});