2014-01-30 63 views
4

术语

  • #foo:slashless方案
  • #/foo:slashy方案

背景

有其使用的应用程序的某些遗留部分(和依赖)的slashless方案。我想以非破坏性的方式介绍Angular路由(可能带有ui-router),这样就不会干扰传统路由,因此部分应用可能会逐渐淘汰。一旦发生这种情况,所有角度的应用程序都可以一次切换到slashy方案。如何使Angular路由器(或ui路由器)接受类似`#foo`的路由而不是重定向到“#/ foo”?

到目前为止

我试着设置$locationProvider.hashPrefix('')为空字符串,但似乎你只能设置#/之间的字符串,这样就没有工作。

选项

看来我可以

  • 应用程序的重写遗留部分,或者
  • 重写角的$ locationProvider.hashPrefix包括默认'/'。因此将其设置为''会变得有意义。

这两个选项看起来都非常耗时。

你知道更好的方法让Angular认识到无斜线方案吗?

+0

如果我正确地得到您的问题,您应该使用HTML路由模式。这是一个类似的参考:http://stackoverflow.com/questions/16677528/location-switching-between-html5-and-hashbang-mode-link-rewriting – Tomer

回答

1

你可以尝试使用重定向!

随着ui-router

app.config(function ($urlRouterProvider) { 
    // when there is an 'old' route, redirect to new one 
    $urlRouterProvider.when('foo', '/foo'); 

    // You can also use regex for the match parameter 
    $urlRouterProvider.when(/(\w+)/i, '/$1'); // UNTESTED!!!!!! 
}) 

参考有关ui-router wiki

我很抱歉,但主题标签是很困难的plunkers /小提琴测试,所以我不能提供一个现在...

+0

嗯,这不是做我的问题所说的相反?我希望'#foo' ** NOT **重定向到'#/ foo'。 – Wizek

相关问题