我有这个路线定义:
$routeProvider
.when('/accountEdit/:accountId?',
{
templateUrl: 'templates/accountEdit.html',
controller: 'accountEditController'
});
当网址更改为http://domain.com/accountEdit/24时,我会收到404:
获取http://domain.com/accountEdit/templates/accountEdit.html 404(未找到)
为什么angular前缀accountEdit /在templateUrl之前?
我可以在浏览器中访问文件../templates/accountEdit.html。
这是有效的,我显然改变了一些东西但却看不到什么。我能想到的唯一想法就是我改变了Web中的RouteConfig.Api后端默认为" index.html"routes.MapRoute(name: "Default", url: "index.html");
但是我已经取消了这些更改,我仍然得到了404。
更新
我可以通过不使用$ locationProvider.html5Mode(true);
来解决这个问题我认为这是由于同时使用html5Mode和routes.MapRoute(名称:"默认",url:" index.html");
当我访问网站的根目录时,我可能需要更好的方法来返回index.html。
答案 0 :(得分:0)
您可以使用interceptor之类的:
angular.module('app', [])
.config(function ($httpProvider) {
// Add the interceptor to the $httpProvider.
$httpProvider.interceptors.push('MyHttpInterceptor');
})
.factory('MyHttpInterceptor', function ($q) {
return {
// On request success
request: function (config) {
config.url = 'mypath/'+ config.url
console.log(config);
// Return the config or wrap it in a promise if blank.
return config || $q.when(config);
}
}
})
答案 1 :(得分:0)
对于索引(站点根目录),您也可以这样做:
$routeProvider
.when('/accountEdit/:accountId?',
{
templateUrl: 'templates/accountEdit.html',
controller: 'accountEditController'
})
.when('/home',
{
templateUrl: 'templates/index.html',
controller: 'indexController'
})
.otherwise({
redirectTo: '/home'
});
例如,我已将网站烟灰映射到/ home,但您可以按照自己的意愿进行操作。
答案 2 :(得分:0)
尝试templateUrl
前加/
值:
$routeProvider.when('/accountEdit/:accountId?', {
templateUrl: '/templates/accountEdit.html',
controller: 'accountEditController'
});