我如何初始化我的 AngularJS 应用程序的背景在这里: SCRIPT5022: 10 $digest() 达到了迭代。中止!并重定向到 index.html
总结问题
当我执行window.location = $scope.myReturnUrl并且如果返回 URL 包含"#"时,AngularJS 不会重新加载页面,而是捕获 url 更改并转到.otherwise rout 提供程序设置的一部分,并且 Angular App 是再次加载。但是,我希望它重定向到指定的 URL。
简要说明我是如何做到的:
我在 Bootstrap 模式中加载我的 AngularJS 应用程序,这就是我初始化的方式
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)
所以,当我的应用程序初始化时,网址看起来像:
http://my-site.uk/user/dashboard.html#/mywork/find/id/9780273651
现在,模态对话框上有一个取消按钮,单击我通过 ng-click 捕获的单击,当单击时,它只是执行类似的重定向
window.location = $rootScope.returnToUrl;
现在,在我的情况下,返回 url 包含被点击的链接的 id,以便浏览器可以滚动到特定部分,返回 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 rout 提供程序设置的一部分,并且再次加载了 Angular 应用程序。但是,我希望它重定向到指定的 URL。
由于历史原因,我正在使用 html5mode(true) (在此线程中提到:SCRIPT5022: 10 $digest() 达到了迭代。中止!并重定向到 index.html)
我不想从我的返回 url 中删除 #,因为它会破坏工作流程。任何建议如何克服这个问题?
谢谢,
狂欢