AngularJS中RouteProvider的相对URL

AngularJS中RouteProvider的相对URL,angularjs,relative-path,angularjs-routing,Angularjs,Relative Path,Angularjs Routing,我有一个网站,可能会在IIS的目录中放置。当我通过IISExpress在我的计算机上运行应用程序时,路由是相对于基本URL的,因此我可以按如下方式定义路由: $routeProvider.when("/home", { controller: "homeController", templateUrl: "/app/layout/myView.html" }); 这为我提供了以下URL: 当我将此网站发布到我们的服务器时,我有以下URL: 但是,我一直收到一个错误,无法加载

我有一个网站,可能会在IIS的目录中放置。当我通过IISExpress在我的计算机上运行应用程序时,路由是相对于基本URL的,因此我可以按如下方式定义路由:

$routeProvider.when("/home", {
    controller: "homeController",
    templateUrl: "/app/layout/myView.html"
});
这为我提供了以下URL:

当我将此网站发布到我们的服务器时,我有以下URL:

但是,我一直收到一个错误,无法加载模板:/app/layout/myView.html。当我看Fiddler时,我可以看到它试图从而不是从中拉入模板。我已尝试将templateUrl重写为../app/layout/myView.html、~/app/layout/myView.html和.././app/layout/myView.html。不管我做什么,我最终还是尝试从父文件夹而不是MyApp中提取它。我还尝试设置web.config设置,并使用它在templateUrl上添加前缀,但它似乎不希望在加载模板之前运行该代码。最后,我尝试为templateUrl设置一个函数,但是我在web.config文件中存储该函数的方式会在提取信息时产生时间问题


这似乎是一个常见的问题,我把它弄得过于复杂了。有没有办法使其成为相对URL?

您应该将以下内容添加到HTML的头部:

<base href="MyApp/" />

有关更多详细信息,请参阅。

如果我正确理解了您的问题,您希望导航到主拾取MyApp/app/layout/myView.html。首先,你不需要/app/layout/myView.html,app/layout/myView.html是正确的。其次,如果您的“MyApp”文件夹包含应用程序,请尝试templateUrl:MyApp/app/layout/myView.html或templateUrl:../app/layout/myView.htm问题是,我无法事先知道“MyApp”的名称,因此我必须找出并在投入生产后更改所有代码。我一直在寻找一种方法,把它放在一个位置,以后不必重新编译任何东西。谢谢!我可以通过web.config文件中的设置以编程方式设置此选项。