Angular-支持hash和amp;普通网址?

时间:2015-12-20 08:31:14

标签: angularjs

我对Angularjs很新,所以请原谅我这是一个显而易见的问题。 我们有一个现有的Ajgularjs单页面应用程序,它可以处理哈希后的数据。 E.g。

http://server/myapp#/user/777?accountid=123&arranger=true

注意哈希。

这通常有效。不幸的是,我们遇到了一些我们无法使用哈希的新场景(深层链接有时会通过我们控制之外的身份验证框架,并且它会删除网址的哈希部分)。所以我们还需要没有哈希的链接,例如

http://server/myapp/user/777?accountid=123&arranger=true

注意:我不介意确切的格式,只需注意它是无哈希的。

问题:是否有一些合理的方法来支持这两种方法,以便应用程序对两种类型的链接做出类似的反应? (我们需要“哈希”格式以向后兼容旧链接,我们需要新的身份验证方案的“无哈希”格式)

非常感谢

1 个答案:

答案 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以导航到应用程序中的解码路径。