фоне того, как я инициализацией мое AngularJS приложение здесь: SCRIPT5022: 10 $digest() iterations reached. Aborting! and redirecting to index.htmlПеренаправление от Angular JS не работает для URL с хэш '#'
Summery Проблема
Когда я делаю window.location = $ scope.myReturnUrl, и если URL-адрес возврата содержит «#», вместо перезагрузки страницы AngularJS фиксирует изменение URL-адреса и отправляется в .otherwise часть настройки поставщика маршрутов, а приложение Angular App загружается усиление. Но я ожидаю, что он перенаправит указанный 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 установлен ложь для всех модулей:
$locationProvider.html5Mode(false)
Так что, когда мое приложение инициализации URL выглядеть примерно так:
http://my-site.uk/user/dashboard.html#/mywork/find/id/9780273651
Теперь есть кнопка отмены в диалоговом окне Модального, нажмите на которой я улавливать через нг-клик, и при нажатии, он просто сделать переназначение что-то вроде
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 (правда), что обусловлено историческим причинам (о которых говорилось в этой теме: SCRIPT5022: 10 $digest() iterations reached. Aborting! and redirecting to index.html)
Я не хочу, чтобы удалить # из моего возвращения URL, потому что это нарушит процесс. Любое предложение, как преодолеть это?
Спасибо,
Равиш
есть когда-то проблемы, хотя, если я пытаюсь страницу, которая не является «AngularJS» App? Я хочу сказать, что я хочу прокрутить этот раздел, но эта страница не является AngularJS. Я использую 'window.location = MY_REDIRECT_URL' для перенаправления на некоторую страницу. URL-адрес перенаправления содержит ** ** **, но должен быть способ «рассказать» AngularJS, которые не прослушивают/^ these_urls [-] */i,? – Ravish
Я решил проблему, используя работу, я отвечу на свой вопрос с подробностями. спасибо за ваш ответ – Ravish