AngularJS中

时间:2015-05-21 21:13:22

标签: angularjs relative-path angularjs-routing

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

$routeProvider.when("/home", {
    controller: "homeController",
    templateUrl: "/app/layout/myView.html"
});

这给了我以下网址: http://localhost:60847/#/home

当我将此网站发布到我们的服务器时,我有以下网址: http://dev.mysite.com/MyApp/#/home

但是,我一直收到错误“无法加载模板:/app/layout/myView.html”。当我看到Fiddler时,我发现它正试图从http://dev.mysite.com/app/layout/myView.html而不是http://dev.mysite.com/MyApp/app/layout/myView.html提取模板。我尝试将templateUrl重写为../app/layout/myView.html,作为〜/ app / layout / myView.html,以及../../app/layout/myView.html。无论我做什么,我仍然最终试图从父文件夹而不是从MyApp中提取它。我还尝试设置web.config设置并使用它在templateUrl上添加前缀,但它似乎不想在加载模板之前运行该代码。最后,我尝试为templateUrl设置一个函数,但是我存储在web.config文件中的方式会产生提取信息的时间问题。

似乎这一定是一个常见问题,我制作过于复杂。有没有办法让它成为一个相对的URL?

1 个答案:

答案 0 :(得分:0)

您应该添加到HTML的头部:

<base href="MyApp/" />

有关详细信息,请参阅this documentation page