2012-10-12 46 views
18

是否有可能以將從其目錄路徑中抽象出來的方式來開發Angular.js應用程序?Angular.js中的子目錄中的路由

我試圖把一個Angular.js應用程序放在一個web服務器子目錄http://example.com/myproject/,但路由器將我重定向到web服務器根目錄 - http://example.com

下面是我的Angular.js應用程序:

var myproject = angular.module('myproject', []); 

myproject.config(function($routeProvider, $locationProvider) { 
    $routeProvider. 
    when('/', {templateUrl: 'partials/index.html', controller: IndexCtrl}). 
    otherwise({redirectTo: '/'}); 

    $locationProvider.html5Mode(true); 
}); 



function IndexCtrl($scope, $location) { 

} 
+1

加上一個用戶名:) – silver

回答

25

嘗試在你的<head></head>設置<base href="/sudirectory"/>。這就是我需要做的工作,IIRC

謹慎的話:這將攪亂任何具有href =「#」的錨定標記,以及充當圖像srcs之類的根。

+0

這樣做的伎倆!感謝blesh。 – sssilver

+5

另一個可能有幫助的提示:在設置之後,不要忘記使用相對路徑而不是絕對路由器部分模板資源。 – sssilver

+1

適用於相對路徑,但我有指定爲'getSomething /'的AJAX調用,除非我需要將它們設置爲'/ getSomething /',否則它將工作,因爲否則它會附加到可能具有其他路由信息的URL它。我希望AJAX調用解析爲'mydomain/getSomething /',但如果我的Angular路由器讓我在'mydomain/article/1 /'中,它會被追加。我別無選擇,只能創建一個全局的base_url變量並將其預先添加到我的所有AJAX URL中。將Angular設置爲一個配置會很好,但幸運的是這個項目足夠小,只需手工完成。 –