在AngularJs路由后重新加载不工作

时间:2018-02-21 09:57:43

标签: angularjs angularjs-routing

我遇到了一些与AngularJs路由相关的麻烦。我已经尝试在线寻找答案,但我仍然不清楚所提供的解决方案。

首先,这是我的路由块:

var myApp = angular.module('myApp', ["ngRoute", "ngAnimate"]);
myApp.config(function($routeProvider, $locationProvider) {
        $locationProvider.html5Mode(true);
        $routeProvider
            .when("/", {
                templateUrl: "../view/home.html",
                controller: "slideShowController",
            })

            .when("/business&consumer", {
                templateUrl: "../view/govnservices.html",
                controller: "productController",
            })

            .when("/about", {
                templateUrl: "../view/about.html",
                controller: "pagController",
            })

            .when("/project", {
                templateUrl: "../view/projects.html",
                controller: "projController",
            })

            .when("/service", {
                templateUrl: "../view/services.html",
                controller: "servController",
            })

            .otherwise({
                redirectTo: '/',
            })

});

这就是我将引用传递给我的链接的方式:

<a href="/">Home</a>

另一个链接:

 name: "About Us",
 templateUrl: "/about",

现在到处都指定为:

<a href="#/">Home</a>

但是在使用'#'时,我的链接无效(仍然不知道为什么。)

再次没有使用'#'我的所有链接都正常工作,但如果我尝试重新加载我的页面,则会出现404错误:找不到页面。

有人请帮我解决这个问题,如果有任何部分不清楚,请在评论中提及。另外请提及任何学习路由的好资料。

1 个答案:

答案 0 :(得分:0)

你的问题并不完全清楚:“再次没有使用'#'我的所有链接都正常工作,但如果我尝试重新加载我的页面,则会出现404错误:找不到页面。”

你是否正在使用#或不?既然我们正在谈论html5mode,我现在不会假设(因为你不得在那种模式下使用它)......

所以我假设你看到的症状是你

  1. 导航到“http://wheremyappishosted/”这会加载您的应用和 一切都很好......
  2. 现在点击“关于”,这会改变你的 “http://wheremyappishosted/about”的位置以及所有内容 工作得很好。
  3. 现在,您在浏览器中突然点击了“刷新” 你得到了404
  4. 听起来不错?如果是这样......问题是你的服务器而不是AngularJS路由......

    这是从服务器角度发生的事情:

    1. 收到“http://wheremyappishosted/”请求,服务器响应 与应用程序的主页面。一切都很好......
    2. AngularJS处理路由更改,服务器不接收任何请求 对于“http://wheremyappishosted/about”然而,它会收到请求 它可以找到并回复的模板“../view/about.html” 一切都很好......
    3. 收到“http://wheremyappishosted/about”的请求,但服务器已收到 我不知道该怎么回应所以它给了404 ......
    4. 解决方案是您需要将主页作为后备路由发送...您可能不会安装某些过滤器,以便父路由“api”下的未知路由可能仍会失败404等...

      但它的本质是服务器不知道响应“http://wheremyappishosted/about”的内容,所以你需要配置它以便它知道。