【问题标题】:Strange angularjs route behaviour奇怪的angularjs路由行为
【发布时间】:2017-12-30 03:14:08
【问题描述】:

我的 angularjs 应用程序有以下路线:

 angular.module('index').config(['$routeProvider', '$locationProvider',
                   function indexRouteConfig($routeProvider, $locationProvider) {

   $locationProvider.html5Mode(true);

   var routeToUserHomePage = ['$injector', function routeToUserHomePage($injector) {
       var $location = $injector.get('$location');
       //somecode

       $location.url('/unauthorized'); // this works
   }

   $routeProvider
     .when('/', {
        templateUrl   : 'app/custom/templates/customTemplate.html',
        controller    : 'customTemplateController',
        resolve       : { routeToUserHomePage: routeToUserHomePage }
    })
    .when('/unauthorized', {
        templateUrl   : 'app/custom/templates/customTemplate.html',
        controller    : 'customTemplateController'
    })
    .otherwise({
        resolve : { routeToUserHomePage: routeToUserHomePage }
    });

如果我访问 url http://localhost:8090/ 它可以完美运行,并且我会重定向到 unauthorized 屏幕。

但如果我在浏览器中输入http://localhost:8090/unauthorized,我会从网络服务器收到Error 404 Not Found。它甚至没有击中“否则”的路线。我在这里缺少什么?

我在 index.html 文件中有<base href="/"> 标签。

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    这是因为您启用了html5Mode,但服务器上没有它需要的东西。

    服务器端使用此模式需要在服务器端重写 URL,基本上你必须重写所有指向应用程序入口点的链接(例如 index.html)

    来源:AngularJS HTML5 Mode - How do direct links work without server specific changes?

    【讨论】:

      【解决方案2】:

      创建一个单独的控制器和模板,然后在该控制器中编写逻辑

      .otherwise ({
          url: '/unauthorized',
          controller: 'error',
          templateUrl: 'templateUrl.html',
      });
      
      function error($location) {
       // write whatever your logic
      }
      

      【讨论】:

      • 其实我做不到,我已经简化了 routeToUserHomePage 方法的代码。问题是如果我输入localhost:8090/unauthorized 并在浏览器上按回车,我会收到 404 错误
      猜你喜欢
      • 2015-01-04
      • 1970-01-01
      • 2014-10-23
      • 2017-09-01
      • 2016-09-25
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多