Tudo bem, acho que entendi ...
Um pequeno histórico primeiro: O motivo pelo qual eu precisava disso era colocar o Angular no topo do Node Express e fazer com que Jade processasse meus parciais para mim.
Então aqui está o que você tem que fazer ... (beber cerveja e passar mais de 20 horas nela primeiro !!!) ...
Ao configurar seu módulo, salve $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/');
});
...
Isso pode ser mais informações do que o necessário ...
Basicamente, você vai querer armazenar a $routeProvidervar do seu módulo globalmente, por exemplo, de routeProviderforma que possa ser acessada por seus controladores.
Então você pode apenas usar routeProvidere criar uma NOVA rota (você não pode 'RESET a rota' / 'REpromise'; você deve criar uma nova), eu apenas adicionei uma barra (/) no final para que seja tão semântica como o primeiro.
Em seguida, (dentro do seu controlador), defina o templateUrlpara a visualização que deseja atingir.
Retire a controllerpropriedade do .when()objeto, para não obter um loop infinito de solicitação.
E por último (ainda dentro do Controller), use $location.path()para redirecionar para a rota que acabou de ser criada.
Se você estiver interessado em como inserir um aplicativo Angular em um aplicativo Express, pode fazer um fork do meu repo aqui: https://github.com/cScarlson/isomorph .
E este método também permite que você mantenha as ligações de dados bidirecionais do AngularJS no caso de desejar vincular seu HTML ao seu banco de dados usando WebSockets: caso contrário, sem este método, suas ligações de dados angulares serão apenas impressas {{model.param}}.
Se você clonar isso neste momento, precisará do mongoDB em sua máquina para executá-lo.
Espero que isso resolva o problema!
Cody
Não beba a água do banho.
config()apenas para provedores são passados, não instâncias de serviço reais, como$routePrams.