Está bien, creo que lo tengo ...
Primero un poco de fondo: la razón por la que necesitaba esto era colocar Angular encima de Node Express y hacer que Jade procesara mis parciales por mí.
Así que esto es lo que tienes que hacer ... (¡bebe cerveza y pasa más de 20 horas en ella primero!) ...
Cuando configure su módulo, guarde $routeProviderglobalmente:
// app.js:
var routeProvider
, app = angular.module('Isomorph', ['ngResource']).config(function($routeProvider){
routeProvider = $routeProvider;
$routeProvider
.when('/', {templateUrl: '/login', controller: 'AppCtrl'})
.when('/home', {templateUrl: '/', controller: 'AppCtrl'})
.when('/login', {templateUrl: '/login', controller: 'AppCtrl'})
.when('/SAMPLE', {templateUrl: '/SAMPLE', controller: 'SAMPLECtrl'})
.when('/map', {templateUrl: '/map', controller: 'MapCtrl'})
.when('/chat', {templateUrl: '/chat', controller: 'ChatCtrl'})
.when('/blog', {templateUrl: '/blog', controller: 'BlogCtrl'})
.when('/files', {templateUrl: '/files', controller: 'FilesCtrl'})
.when('/tasks', {templateUrl: '/tasks', controller: 'TasksCtrl'})
.when('/tasks/new', {templateUrl: '/tasks/new', controller: 'NewTaskCtrl'})
.when('/tasks/:id', {templateUrl: '/tasks', controller: 'ViewTaskCtrl'})
.when('/tasks/:id/edit', {templateUrl: '/tasks', controller: 'EditTaskCtrl'})
.when('/tasks/:id/delete', {templateUrl: '/tasks', controller: 'DeleteTaskCtrl'})
.otherwise({redirectTo: '/login'});
});
// ctrls.js
...
app.controller('EditTaskCtrl', function($scope, $routeParams, $location, $http){
var idParam = $routeParams.id;
routeProvider.when('/tasks/:id/edit/', {templateUrl: '/tasks/' + idParam + '/edit'});
$location.path('/tasks/' + idParam + '/edit/');
});
...
Eso puede ser más información de la que se necesitaba ...
Básicamente, querrá almacenar la $routeProvidervar de su módulo globalmente, por ejemplo, routeProviderpara que sus controladores puedan acceder a él.
Luego, puede usar routeProvidery crear una ruta NUEVA (no puede 'RESTABLECER una ruta' / 'REpromise'; debe crear una nueva), acabo de agregar una barra (/) al final para que sea tan semántica como el primero.
Luego (dentro de su controlador), configure templateUrlla vista a la que desea acceder.
Elimina la controllerpropiedad del .when()objeto, no sea que obtengas un bucle de solicitud infinito.
Y finalmente (aún dentro del controlador), use $location.path()para redirigir a la ruta que acaba de crear.
Si está interesado en cómo colocar una aplicación Angular en una aplicación Express, puede bifurcar mi repositorio aquí: https://github.com/cScarlson/isomorph .
Y este método también le permite mantener las vinculaciones de datos bidireccionales de AngularJS en caso de que desee vincular su HTML a su base de datos utilizando WebSockets: de lo contrario, sin este método, sus vinculaciones de datos angulares solo se generarán {{model.param}}.
Si clona esto en este momento, necesitará mongoDB en su máquina para ejecutarlo.
¡Espero que esto resuelva este problema!
Cody
No beba el agua de su baño.
config()se pasan los objetivos de inyección solo a los proveedores, no a instancias de servicio reales como$routePrams.