Хорошо, думаю, я понял ...
Сначала немного предыстории: причина, по которой мне это было нужно, заключалась в том, чтобы закрепить 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
var вашего модуля глобально, например, routeProvider
чтобы он был доступен вашим контроллерам.
Затем вы можете просто использовать routeProvider
и создать НОВЫЙ маршрут (вы не можете 'RESET a route' / 'REpromise'; вы должны создать новый), я просто добавил косую черту (/) в конце, чтобы он был семантическим как первый.
Затем (внутри вашего контроллера) установите templateUrl
вид, который вы хотите поразить.
Выньте controller
свойство .when()
объекта, чтобы не получить бесконечный цикл запроса.
И, наконец (все еще внутри контроллера), используйте $location.path()
для перенаправления на только что созданный маршрут.
Если вас интересует, как вставить приложение Angular в приложение Express, вы можете разветвить мое репо здесь: https://github.com/cScarlson/isomorph .
И этот метод также позволяет вам сохранить двунаправленные привязки данных AngularJS на случай, если вы хотите привязать свой HTML к своей базе данных с помощью WebSockets: в противном случае без этого метода ваши привязки данных Angular будут просто выводиться {{model.param}}
.
Если вы клонируете это сейчас, вам понадобится mongoDB на вашем компьютере для его запуска.
Надеюсь, это решит эту проблему!
Коди
Не пейте воду из ванны.
config()
передаются только поставщикам, а не фактическим экземплярам службы, например$routePrams
.