Va bene, penso di aver capito ...
Prima un po 'di background: il motivo per cui avevo bisogno di questo era attaccare Angular su Node Express e fare in modo che Jade elaborasse i miei parziali per me.
Quindi ecco cosa devi fare ... (bevi birra e trascorri più di 20 ore prima !!!) ...
Quando imposti il tuo modulo, salva $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/');
});
...
Potrebbe trattarsi di più informazioni di quelle necessarie ...
Fondamentalmente, vorrai memorizzare $routeProviderglobalmente la variabile del tuo modulo , ad esempio in routeProvidermodo che possa essere accessibile dai tuoi controller.
Quindi puoi semplicemente usare routeProvidere creare una NUOVA rotta (non puoi 'RESETTARE una rotta' / 'REpromettere'; devi crearne una nuova), ho appena aggiunto una barra (/) alla fine in modo che sia semantica come il primo.
Quindi (all'interno del controller), imposta templateUrlla visualizzazione che desideri colpire.
Elimina la controllerproprietà .when()dell'oggetto, per evitare di ottenere un ciclo di richieste infinito.
E infine (sempre all'interno del Controller), utilizzare $location.path()per reindirizzare al percorso appena creato.
Se sei interessato a come inserire un'app Angular su un'app Express, puoi eseguire il fork del mio repository qui: https://github.com/cScarlson/isomorph .
E questo metodo ti consente anche di mantenere le associazioni di dati bidirezionali AngularJS nel caso in cui desideri associare il tuo HTML al tuo database utilizzando WebSocket: altrimenti senza questo metodo, le tue associazioni di dati angolari verranno semplicemente emesse {{model.param}}.
Se lo cloni in questo momento, avrai bisogno di mongoDB sulla tua macchina per eseguirlo.
Spero che questo risolva questo problema!
Cody
Non bere l'acqua del bagno.
config()vengono passati i target di injection solo ai provider, non le istanze di servizio effettive come$routePrams.