我的应用程序在HTML5模式和嵌套URL中有问题,请让我解释一下。
这是一个示例路由文件:
angular.module('widgets').config(['$stateProvider',
function($stateProvider) {
$stateProvider.
state('widgets', {
url: '/widgets',
abstract: true
}).
state('widgets.create', {
url: '/create',
views: {
'content@': {
templateUrl: 'modules/widgets/views/widgets.create.client.view.html',
}
}
});
}
]);
在我关闭HTML5模式之前,此方法一直有效:
$locationProvider.hashPrefix('!');
当我使用以下命令打开HTML5模式时:
$locationProvider.html5Mode(true).hashPrefix('!');
碰巧,当我尝试嵌套URL
/widgets/create
时,由于templateUrl文件的前缀是/widgets/
,所以我没有找到404错误,因此却得到了:http://127.0.0.1/modules/widgets/views/widgets.create.client.view.html
相反,它尝试获得:
http://127.0.0.1/ widgets / modules / widgets / views / widgets.create.client.view.html
有任何想法吗?
最佳答案
我找到了!启用HTML5mode
时,需要在主文档的head
中添加此标记:
<head>
<base href="/" />
...
</head>
解释如下:https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#issue-my-assets-and-templates-are-not-loading
关于javascript - HTML5模式下的Angular-ui嵌套 View 未找到模板文件的404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33296911/