我的应用程序在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/

10-09 16:22