Предыстория того, как я инициализирую свое приложение AngularJS, находится здесь: SCRIPT5022: достигнуто 10 итераций $digest(). Прерывание! и перенаправление на index.html
Летняя проблема
Когда я делаю window.location = $scope.myReturnUrl и если возвращаемый URL-адрес содержит "#", вместо перезагрузки страницы AngularJS фиксирует изменение URL-адреса и переходит к .otherwise части настройки поставщика маршрутизации, и приложение Angular снова загружается. Но я ожидаю, что он будет перенаправлен на указанный URL-адрес.
Кратко о том, как я это делаю:
Я загружаю свое приложение AngularJS внутри Bootstrap Modal, вот как я инициализирую
var markup = '<div id="ng-app" ng-app="myapp" xmlns:ng="http://angularjs.org"><div ng-controller="MyAppAppCtrl"><div ng-view></div></div></div>';
jQuery('#works-modal').html(markup);
angular.bootstrap(jQuery('#ng-app'), ['myapp']);
jQuery('#works-modal').modal('show');
в моем app.js для html5mode установлено значение false для всех модулей:
$locationProvider.html5Mode(false)
Итак, когда мое приложение инициализировано, URL-адрес выглядит примерно так:
http://my-site.uk/user/dashboard.html#/mywork/find/id/9780273651
Теперь в модальном диалоговом окне есть кнопка отмены, щелчок по которой я перехватываю с помощью ng-click, и при нажатии он просто выполняет перенаправление, например
window.location = $rootScope.returnToUrl;
теперь, в моем случае, возвращаемый URL-адрес содержит идентификатор ссылки, по которой щелкнули, чтобы браузер мог прокручивать до определенного раздела, возвращаемый URL-адрес:
http://my-site.uk/user/dashboard.html#my-work1
моя конфигурация провайдера маршрутизации
$routeProvider.
when('/mywork/find/:id', {
templateUrl: '/mywork/partials/find/find.html',
controller: WorkCtrl
}).
when('/mywork/find/review/submit/:id', {
templateUrl: '/mywork/partials/review.html',
controller: ReviewCtrl
}).
otherwise({
redirectTo: '/mywork/find/id/'+id
});
Проблема
Теперь, когда я пытаюсь перенаправить на: http://my-site.uk/user/dashboard.html#my-work1 вместо перезагрузки страницы и прокрутки до назначенного #ID, AngularJS фиксирует изменение URL-адреса и вместо этого перезагружает приложение. это происходит потому, что AngularJS фиксирует изменение URL-адреса и переходит к .otherwise части настройки поставщика маршрутизации, а приложение Angular загружается снова. Но я ожидаю, что он будет перенаправлен на указанный URL-адрес.
Я использую html5mode (true) по исторической причине (упомянутой в этой теме: SCRIPT5022: достигнуто 10 итераций $digest(). Прерывание! и перенаправление на index.html)
Я не хочу удалять # из моего обратного URL, потому что это нарушит рабочий процесс. Любое предложение, как преодолеть это?
Спасибо,
Равиш