W porządku, myślę, że to rozumiem ...
Najpierw małe tło: potrzebowałem tego, aby przykleić Angular na wierzchu Node Express i poprosić Jade o przetworzenie za mnie moich stron.
Więc oto co muszę zrobić ... (najpierw pij piwo i spędź na nim ponad 20 godzin !!!) ...
Podczas konfigurowania modułu zapisz $routeProviderglobalnie:
// 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/');
});
...
To może być więcej informacji, niż było potrzebne ...
Zasadniczo będziesz chciał przechowywać zmienne swojego modułu $routeProviderglobalnie, np. routeProviderTak, aby były dostępne dla twoich kontrolerów.
Następnie możesz po prostu użyć routeProvideri utworzyć NOWĄ trasę (nie możesz 'ZRESETOWAĆ trasy' / 'REpromise'; musisz utworzyć nową), po prostu dodałem ukośnik (/) na końcu, aby była tak semantyczna jako pierwszy.
Następnie (wewnątrz kontrolera) ustaw templateUrlwidok, w który chcesz trafić.
Usuń controllerwłaściwość .when()obiektu, aby nie uzyskać nieskończonej pętli żądań.
I na koniec (nadal w kontrolerze) użyj, $location.path()aby przekierować do właśnie utworzonej trasy.
Jeśli interesuje Cię, jak włożyć aplikację Angular do aplikacji Express, możesz rozwidlić moje repozytorium tutaj: https://github.com/cScarlson/isomorph .
Ta metoda pozwala również zachować dwukierunkowe powiązania danych AngularJS na wypadek, gdybyś chciał powiązać swój kod HTML z bazą danych za pomocą WebSockets: w przeciwnym razie bez tej metody twoje wiązania danych Angular będą po prostu wyprowadzane {{model.param}}.
Jeśli sklonujesz to teraz, będziesz potrzebować mongoDB na swoim komputerze, aby go uruchomić.
Mam nadzieję, że to rozwiązuje ten problem!
Cody
Nie pij swojej kąpieli.
config()są przekazywane tylko do dostawców, a nie rzeczywiste wystąpienia usługi, takie jak$routePrams.