2013-05-03 72 views
2

在我的模板中我想使用相對路徑。目前,我有絕對路徑在我的錨href的,這是最理想的AngularJS中的相對鏈接

<a href="/#/dashboard/settings">Settings</a> 

我怎麼可以重寫這是一個相對導航(在這個相對dashboard)?

它應與hashbang和HTML5歷史API路線(取AngularJS使用或回退到)

回答

2

我不認爲你可以重寫它使用相對導航工作。如果你想鏈接到/user/profile,但你的用戶在/dashboard/settings上,相對工作如何。如果主導航簡單地鏈接到profile(相對),它將轉到/dashboard/profile,我認爲這不是您想要的。

爲什麼相對路徑在您的應用程序中如此重要?任何比儲蓄擊鍵更多的東西?

+0

有至少以某種方式告訴角度來自動替換'/#/'前綴'/'如果HTML5路由可用(或反之亦然)? – 2013-05-03 23:42:39

+0

是的,如果您使用帶有'.html5Mode(true)'的'$ locationProvider':http://docs.angularjs.org/guide/dev_guide.services.$location – Langdon 2013-05-03 23:45:01

+1

我已經使用了它,但它不能替代散列,只是逃避'/#%2Fdashboard%2Fsettings'。 – 2013-05-03 23:45:57

3

在你的控制器中,你可以看看$routeParams並建立一個基地網址來操作。

從那裏,你的模板可以針對"{{baseUrl}}/relative/to/scope/baseUrl"

而且你的代碼中內置的URL操作可以去$scope.baseUrl + /relative/to/scope/baseUrl";

這不正是「相對的」,但它確實解決了允許的URL提煉其他網址,而不必問題硬編碼層次結構並擔心變量等的routeparams。

0

我不知道你的角度版本,但在我的1.2.18,當你設置

<base href="/base"></base> 

,每當你的元素HREF,你開始與「相對/到/你/ URL」,那麼你的鏈接將指向 「/基/親戚/到/你/ URL」:

<a href="relative/to/you/url"></a> 

注:我已經打開了HTML5 API模式$ locationProvider:

$locationProvider.html5Mode(true); 

編輯:請參閱<base>標記的MDN文檔。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base

1

老問題,但我發現這工作:

$locationProvider.html5Mode({ 
    enabled: true, 
    requireBase: false, 
    rewriteLinks: false 
});