Добре, подумайте, я зрозумів ...
Спочатку невелика довідка: Причина, через яку мені це було потрібно, - це прикріпити Angular зверху до Node Express і забезпечити, щоб Jade обробляла мої часткові дані за мене.
Тож ось що потрібно зробити ... (випити пива і спочатку витратити на нього понад 20 годин !!!) ...
Під час налаштування модуля збережіть $routeProviderглобально:
// 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/');
});
...
Це може бути більше інформації, ніж те, що було потрібно ...
По суті, ви хочете зберігати змінну вашого модуля $routeProviderглобально, наприклад, routeProviderтак, щоб він міг отримати доступ до ваших контролерів.
Тоді ви можете просто використати routeProviderі створити НОВИЙ маршрут (ви не можете 'СКИНУТИ маршрут' / 'ПЕРЕСМОТРИТИ'; ви повинні створити новий), я просто додав скісну риску (/) в кінці, щоб вона була максимально семантичною як перший.
Потім (всередині контролера) встановіть templateUrlдля подання, яке потрібно натиснути.
Вийміть controllerвластивість .when()об’єкта, щоб не отримати нескінченний цикл запитів.
І нарешті (все ще знаходиться всередині Контролера), використовуйте $location.path()для переадресації на щойно створений маршрут.
Якщо вас цікавить, як застосувати програму Angular на програму Express, ви можете розкласти моє репо тут: https://github.com/cScarlson/isomorph .
Цей метод також дозволяє зберігати двонаправлені прив'язки даних AngularJS у випадку, якщо ви хочете прив’язати свій HTML до бази даних за допомогою WebSockets: інакше без цього методу ваші кутові прив'язки даних просто вийдуть {{model.param}}.
Якщо ви клонуєте це в цей час, для його запуску вам знадобиться mongoDB на вашій машині.
Сподіваюся, це вирішує цю проблему!
Коді
Не пийте ванну.
config()передаються лише провайдерам, а не фактичним екземплярам послуг, таким як$routePrams.