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 $routeProvider
globalnie:
// 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 $routeProvider
globalnie, np. routeProvider
Tak, aby były dostępne dla twoich kontrolerów.
Następnie możesz po prostu użyć routeProvider
i 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 templateUrl
widok, w który chcesz trafić.
Usuń controller
wł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
.