angularjs视图仅在硬刷新时加载,而不是在重定向

时间:2015-05-19 00:04:51

标签: html angularjs routes

我正在处理我的角度应用程序并设置了这样的路线


    angular.module('app', ['ngRoute'])
        .config(function ($routeProvider, $locationProvider) {
            $routeProvider.when('/', {
                template : "",
                controller : function($window) {
                $window.location.href = '/';
                }
            }).when('/test', {
                    redirectTo : '/test/dashboard'
            }).when('/test/dashboard', {
                    templateUrl : '../partials/dashboard.html',
                    controller : 'DashboardController'
            }).when('/test/unit', {
                    templateUrl : '../partials/unit.html',
                    controller : 'unitController'
            });
            $locationProvider.html5Mode(true);
    });

HTML

<body ng-app="app">
    ...
    <div id="sidebar-wrapper" class="fill-height sidebar-nav">
      <ul class="tabRow nav nav-stacked">

        <li ng-class="{active: isActive('dashboard') }"><a id="dashboardLink" ng-href="#test/dashboard">Dashboard</a>
        </li>

        <li ng-class="{active: isActive('unit') }"><a id="unitLink" ng-href="#test/unit">Unit</a>
        </li>
      </ul>
    </div>
    ...
</body>

问题:

当我输入“/ test”时,此代码会将URL重定向到“/ test / dashboard”,但该页面的html没有显示。但是,当我使用该路由刷新页面时,它会在页面的内容区域中显示html。

当我在链接之间切换时,仪表板会显示,只是在第一次导航时不会加载。

此外,当我将重定向更改为/ test / unit时,它会重定向并显示unit.html。

不确定导致此行为的原因。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为您需要在为requireBase: false配置html5Mode时指定$locationProvider

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

这是一个有效的plnkr demo

有关部署的更多上下文,您应该了解this表单angular docs

答案 1 :(得分:0)

如果删除 -

,则有效
$locationProvider.html5Mode(true);

或者,您可以添加一个类似的question's答案 -

<base href="/" />
     

<head />