我有一个使用AngularJS的MVC应用程序。我正在组织文件夹结构为基于特征而不是基于类型。
现在是一个示例文件夹结构
现在的问题是当ui-router
尝试加载home.html
时,Web服务器会抛出400错误。如果我在浏览器中手动转到该文件,它可以工作。这里有什么问题?为什么我不能从这个目录中提供文件。请注意,我实际上右键单击控制台中的400消息,然后在新选项卡中选择打开。所以我知道我正在查看的文件是AngularJS要求的URL
这是我的ui-router
设置
.state('home', {
url: '/home',
templateUrl: '/app/pages/home/home.html',
controller: 'mainPageController'
})
注意: 我从同一个目录中提供一个.js文件似乎工作正常!
答案 0 :(得分:1)
我遇到了完全相同的问题,这是由另一个尝试修复IE缓存错误的开发人员引起的。
我在Ben Cull找到了解决方案:https://stackoverflow.com/a/30014936/710268。
//initialize get if not there
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}
//disable IE ajax request caching
$httpProvider.defaults.headers.get["If-Modified-Since"] = "Fri, 01 Jan 2010 00:00:00 GMT";
我的问题是“If-Modified-Since”标头设置为“0”,并且由于某种原因导致html模板文件无法加载。
答案 1 :(得分:0)
默认情况下,路由器将从MVC项目的顶层开始(即您的Views和App文件夹所在的位置),而不是您的JavaScript所在的文件夹。
因此,在Angular中,您的templateUrl需要是App / Pages / Home / home.html。
所以在你的角度路由器配置中有属性:
templateUrl: 'App/Pages/Home/home.html'