【问题标题】:AngularJS html5mode URL not workingAngularJS html5mode URL 不起作用
【发布时间】:2016-09-12 14:31:03
【问题描述】:

我有一个简单的 AngularJS 应用程序,其中没有与 nodeJS 相关的代码。我在从 url 中删除 # 时遇到问题。我使用 ui-routes 进行路由。

'use strict';
var app = angular.module('myapp', ['ui-router']).
        config(['$stateProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
               $locationProvider.html5Mode(true);
                $stateProvider.
                        state('home', {
                            url: '/',
                            templateUrl: 'views/index.html'
                        })
                        .state('where-am-i', {
                            url: '/where-am-i',
                            templateUrl: 'views/where_am_i.html',
                            controller: 'mainCtrl'
                        })
                        .state('audience', {
                            url: '/audience',
                            templateUrl: 'views/audience.html',
                            controller: 'mainCtrl'
                        });

            }]);

还在我的 index.html 的 head 部分添加了基本标记。

<base href='/' />

也尝试过不需要基础但仍然无法使其正常工作。

$locationProvider.html5Mode({
            enabled: true,
            requireBase: false
        });

添加基本标记会显示我在 index.html 文件中包含的所有资产的 404。

需要一个快速简单的解决方案。

提前谢谢你!

【问题讨论】:

  • 如果您收到404 错误,那么浏览器似乎是服务器上不存在这些 URL。使用“网络”选项卡准确确定请求的 URL,然后修复服务器。 (请注意,您的问题不包含有关您正在使用的服务器或其配置方式的信息)。
  • 你的 index.html 怎么样?如果您的资产得到 404,则说明您包含它们的方式有问题...
  • 目前,我的应用程序处于开发阶段,所以我在本地主机上运行它,例如 [localhost/projectname]。同样使用&lt;base href="/" /&gt;,我直接从资产文件夹开始包含所有资产,因为我的资产文件夹位于根目录中。

标签: javascript angularjs angular-routing html5mode


【解决方案1】:

在$locationProvider.html5Mode(true);之后添加一行如下:

$locationProvider.hashPrefix('');

希望它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2015-10-04
    • 2015-02-16
    • 2014-09-10
    • 1970-01-01
    相关资源
    最近更新 更多