Très bien, je pense que je l'ai compris ...
Petit rappel en premier: la raison pour laquelle j'en avais besoin était de coller Angular sur Node Express et de laisser Jade traiter mes partiels pour moi.
Alors, voici ce que je dois faire ... (boire de la bière et passer plus de 20 heures dessus en premier !!!) ...
Lorsque vous configurez votre module, enregistrez $routeProvider
globalement:
// 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/');
});
...
Cela peut être plus d'informations que ce qui était nécessaire ...
Fondamentalement, vous voudrez stocker $routeProvider
globalement la variable de votre module , par exemple routeProvider
pour qu'elle soit accessible par vos contrôleurs.
Ensuite, vous pouvez simplement utiliser routeProvider
et créer une NOUVELLE route (vous ne pouvez pas 'RESET a route' / 'REpromise'; vous devez en créer une nouvelle), j'ai juste ajouté une barre oblique (/) à la fin pour qu'elle soit aussi sémantique Comme le premier.
Puis (à l'intérieur de votre contrôleur), réglez le templateUrl
sur la vue que vous souhaitez atteindre.
Supprimez la controller
propriété de l' .when()
objet, de peur d'obtenir une boucle de requête infinie.
Et enfin (toujours à l'intérieur du Controller), utilisez $location.path()
pour rediriger vers la route qui vient d'être créée.
Si vous souhaitez savoir comment appliquer une application Angular à une application Express, vous pouvez créer mon dépôt ici: https://github.com/cScarlson/isomorph .
Et cette méthode vous permet également de conserver les liaisons de données bidirectionnelles AngularJS au cas où vous voudriez lier votre HTML à votre base de données à l'aide de WebSockets: sinon, sans cette méthode, vos liaisons de données angulaires ne sortiront que {{model.param}}
.
Si vous le clonez à ce moment, vous aurez besoin de mongoDB sur votre machine pour l'exécuter.
J'espère que cela résout ce problème!
Cody
Ne buvez pas votre eau de bain.
config()
sont transmises uniquement aux fournisseurs, pas aux instances de service réelles telles que$routePrams
.