Angularjs locationProvider路由无法正常工作

时间:2016-10-18 05:11:17

标签: angularjs

我为locationProvider设置了路由并启用了html5模式:

app.config(function($routeProvider, $locationProvider) {

    // removing this locationProvider will make route work
    $locationProvider.html5Mode({
      enabled: true,
      requireBase: false
    });

    $routeProvider      
        .when('/', {
            templateUrl : '../assets/js/app/views/user/form.html',
            controller  : 'UserFormController'
        })
        // yada yada yada

});

现在,当我到达基本网址时:

http://localhost/projectapp/index.php/foo

未加载控制器,也不是form.html,可能是因为路由未加载控制器。当我从配置中删除$ locationProvider html模式时,控制器被加载。为什么不加载控制器?

2 个答案:

答案 0 :(得分:0)

查看HTML5 Mode errors的文档,

  

如果您将$ location配置为使用 html5Mode (history.pushState),则需要使用 <base href=""> 通过将带有 requireBase:false 的定义对象传递到 $locationProvider.html5Mode()

,将$ locationProvider标记或配置为不需要基本标记

您是否在HTML中添加了base标记?

答案 1 :(得分:0)

你可以简单地使用它:

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

但是要使用html5模式。您需要在index.html文件中添加以下标记。

<html>
<head>
<base href="#" />
</head>
</html>

我希望这会奏效:)