我对Angularjs很新,所以请原谅我这是一个显而易见的问题。 我们有一个现有的Ajgularjs单页面应用程序,它可以处理哈希后的数据。 E.g。
http://server/myapp#/user/777?accountid=123&arranger=true
注意哈希。
这通常有效。不幸的是,我们遇到了一些我们无法使用哈希的新场景(深层链接有时会通过我们控制之外的身份验证框架,并且它会删除网址的哈希部分)。所以我们还需要没有哈希的链接,例如
http://server/myapp/user/777?accountid=123&arranger=true
注意:我不介意确切的格式,只需注意它是无哈希的。
问题:是否有一些合理的方法来支持这两种方法,以便应用程序对两种类型的链接做出类似的反应? (我们需要“哈希”格式以向后兼容旧链接,我们需要新的身份验证方案的“无哈希”格式)
非常感谢
答案 0 :(得分:0)
在$location
服务上,angular使网址的所有部分都可供应用程序使用。
// given url http://example.com/#/some/path?foo=bar&baz=xoxo
var url = $location.url();
// => "/some/path?foo=bar&baz=xoxo"
// given url http://example.com/#/some/path?foo=bar&baz=xoxo
var path = $location.path();
// => "/some/path"
// given url http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue
var hash = $location.hash();
// => "hashValue"
我不确定您的具体情况是什么,但您可以使用$routeChangeStart
事件处理程序(如果使用ui-router,则使用$stateChangeStart
)拦截路由并使用适当的$location
上的方法,找出你想去的路线。然后设置url以导航到应用程序中的解码路径。