AngularJS 中 RouteProvider 的相对 URL

Relative URL for RouteProvider in AngularJS

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

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

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

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

但是,我一直收到错误 "Failed to load template: /app/layout/myView.html"。当我查看 Fiddler 时,我可以看到它正在尝试从 http://dev.mysite.com/app/layout/myView.html instead of from 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?

您应该添加到 HTML 的头部:

<base href="MyApp/" />

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