AngularJS调用AngularRouter时不更新浏览器URL
我有一个AngularJS应用程序,我正在使用ngUpgrade将其转换为AngularJS/AngularJS混合应用程序。AngularJS应用程序与众不同,因为它不使用AngularJS或AngularUI路由器,而是有自己的手动导航解决方案,不更新浏览器中显示的URL,也不与浏览器的历史API交互。到目前为止,一切顺利 我想开始在混合应用程序中使用Angular Router,但最初仅用于新页面 为了使应用程序的两个部分——Angular和AngularJS——能够相互操作,我降低了Angular Router服务的级别,并将其注入到我的AngularJS服务中,这样我就可以调用AngularJS调用AngularRouter时不更新浏览器URL,angularjs,angular,ng-upgrade,Angularjs,Angular,Ng Upgrade,我有一个AngularJS应用程序,我正在使用ngUpgrade将其转换为AngularJS/AngularJS混合应用程序。AngularJS应用程序与众不同,因为它不使用AngularJS或AngularUI路由器,而是有自己的手动导航解决方案,不更新浏览器中显示的URL,也不与浏览器的历史API交互。到目前为止,一切顺利 我想开始在混合应用程序中使用Angular Router,但最初仅用于新页面 为了使应用程序的两个部分——Angular和AngularJS——能够相互操作,我降低了An
Router.navigateByUrl()
从AngularJS代码导航到一个新的Angular页面组件
这工作正常-角度页面组件已添加到我的
,并按预期显示在浏览器中
奇怪的是,浏览器的URL并没有改变。当我为路由器启用跟踪时,我可以看到新路由正在正确处理,并且新页面显示在浏览器中,但浏览器URL仍然显示旧路由。此外,如果查看浏览器历史记录,则新管线尚未添加到其中
我尝试将NgZone
注入我的AngularJS服务,并在NgZone.run()
内调用Router.navigateByUrl()
,但没有任何区别
当我从AngularJS调用Router.navigateByUrl()
时,一切正常-除了在我从AngularJS调用之后,当我看到同样的症状时。这就好像直接从AngularJS调用路由器
,某种程度上破坏了路由和浏览器URL栏之间的链接
有人能帮忙吗?所以问题是当路线改变时,AngularJS
$location
服务没有被更新,在其值和浏览器中显示的值之间留下了差异。该服务中还有一个手表,在每个摘要周期中都会触发,然后根据$location
服务中的值重置浏览器url
原来这是因为我需要在我的AppModule
viz中配置统一角度定位服务:
imports: [
LocationUpgradeModule.config()
]
并将$locationShim
服务降级,以便注入AngularJS,即:
angularJS.module('my-app')
.factory('$location', downgradeInjectable($locationShim));
因此,问题在于当路线改变时,AngularJS
$location
服务没有被更新,在其值和浏览器中显示的值之间留下了差异。该服务中还有一个手表,在每个摘要周期中都会触发,然后根据$location
服务中的值重置浏览器url
原来这是因为我需要在我的AppModule
viz中配置统一角度定位服务:
imports: [
LocationUpgradeModule.config()
]
并将$locationShim
服务降级,以便注入AngularJS,即:
angularJS.module('my-app')
.factory('$location', downgradeInjectable($locationShim));