这是我上一篇文章(angular javascript cleaning URL)的第二个更详细的问题,我认为我找到了解决方案,但没有。
我有一个使用AngularJS构建的SPA应用程序。通常,用户将登录站点并执行各种活动,每个活动由特定子页面(和控制器)管理。
当用户登录应用程序时,将从远程数据库中提取信息并将其添加到$rootScope
对象中。这些信息可以被各种页面使用(因此可以在全球范围内使用)。
用户还可以使用参数接收指向应用程序的链接,例如:http://www.example.com?action=fillform&formid=234lkhjwefj234lofjwodjfw3e
。
当点击链接时,应用程序会检查URL中是否有参数,如果是,则弹出一个模式,显示与要填写的表单相关的一些信息,并提供登录系统(如果访问者已经有帐户)或注册。我们假设用户有一个帐户。
当用户选择登录应用程序时,模式处理登录过程,然后需要将应用程序移动到适用的子页面。这是问题的开始......
我最初使用的是javascript命令:
$window.location.href = "#fill_form?ID=234lkhjwefj234lofjwodjfw3e
它正确地将我带到了页面和特定表单,但使浏览器地址栏中显示的URL为:http://www.example.com?action=fillform&formid=234lkhjwefj234lofjwodjfw3e#/fill_form?ID=234lkhjwefj234lofjwodjfw3e
。
此外,任何其他重定向仍会包含网址的第一部分(即http://www.example.com?action=fillform&formid=234lkhjwefj234lofjwodjfw3e
)。
除了丑陋之外,当用户点击页面中的其他链接时(通常会将用户带到不同的子页面),它会导致问题。
然后,我尝试使用命令:
$window.location.href = location.protocol + "//" + location.host + "/index.html#/fill_form?ID=" + l_ID ;
(其中l_ID
包含234lkhjwefj234lofjwodjfw3e
)。
这删除了通过链接接收的部分参数,但显然,它完全刷新了应用程序上下文,因为从数据库中检索到的与用户相关的信息不再可用。
因此,我需要一种能够遍历子页面的方法,同时删除初始链接的参数并保留在初始步骤/会话中检索到的信息。
任何建议都将受到高度赞赏。