2014-01-30 64 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

相關問題