繁体   English   中英

在ngRoute中刷新页面时找不到页面

[英]page not found when refresh a page in ngRoute

我正在使用angularjs ngRoute路由单个页面应用程序。 它显示localhost / about或localhost / blog。 当我重载时,“无法获取/关于”。 我怎样才能解决这个问题。

我的路由器配置如下。

var myApp = angular.module('myApp',['ngRoute']);
myApp.config(['$locationProvider','$routeProvider',function($locationProvider,$routeProvider){
    $locationProvider.html5Mode(true);
    $routeProvider
        .when('/',{
            templateUrl: 'views/pages/home.html',
            controller: 'homeCtrl'
        })
        .when('/about',{
            templateUrl: 'views/pages/about.html',
            controller: 'aboutCtrl'
        })
        .when('/contact',{
            templateUrl: 'views/pages/contact.html',
            controller: 'contactCtrl'
        })
        .when('/blog',{
            templateUrl: 'views/pages/blog.html',
            controller: 'blogCtrl'
        })
        .otherwise({redirectTo: '/home'});
    }]);

我只使用角度。

那是因为这段代码

$locationProvider.html5Mode(true);

将其设置为false将在每个URL的开头添加一个# ,因此无论您要重新加载哪个页面,服务器都会为您提供索引页面。

您可能正在使用服务器路由,而不是AngularJS路由。 默认情况下,AngularJS使用#之后的路由来路由url。 例如http:// localhost:8080 /#/ about

此外,您可以将HTML5路由与$locationProvider.html5Mode(true)使用,该路由使用的路由我猜您正在使用http://localhost:8080/about

该文档对AngularJS路由不是很清楚。 它讨论了Hashbang和HTML5模式。 实际上,AngularJS路由以三种模式运行:

  • Hashbang模式
  • HTML5模式
  • HTML5模式下的Hashbang

这是因为您使用的是浏览器不支持的HTML5模式。 如上文@Mumpo所述。

您应该更改此行

$locationProvider.html5Mode(true);

到这条线

$locationProvider.html5Mode(false);

这将启用Hashbang模式,并在您的网址之前添加#号

为了进一步深入了解这三种模式。 在这里参考这个Stackoverflow问题。 希望这会有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM