注入$ location时$ routeProvider不工作

时间:2016-09-10 14:52:51

标签: javascript html angularjs

我目前正在开发一个angularjs网站,它有1个模块,每个标签都有不同的控制器。我遇到的问题是以下代码块运行正常,用户被重定向到登录页面并且控制器启动。

angular.module('ScheidsPortal', ['ngRoute', 'ui.grid', 'ui.grid.edit'])
.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $routeProvider
    .when('/', {
        templateUrl: 'app/login/login.html',
        controller: 'loginController'
    })
    .otherwise('/');

    $locationProvider.html5Mode(true);
}])
.run(function ($rootScope, Interface) {

});

但是当在运行函数中注入$location时:

.run(function ($rootScope, Interface, $location) {

路由功能停止工作,不使用重定向且控制器未加载。在控制器中使用$location实例不会产生任何问题。

缺少什么?

1 个答案:

答案 0 :(得分:0)

我找到了解决自己问题的方法:在index.html中,我使用名为“menu”的组件作为我的应用程序的根目录。

<body>
   <menu></menu>
</body>

<div ng-view></div>是菜单组件模板的一部分。 由于此组件有时未呈现,因此并不总是加载$ routeProvider。将<div ng-view></div>放入index.html可以创造奇迹。

在plunker中,您可以看到它的工作原理:在控制台日志中显示“登录控制器”,显示正在加载控制器。 (不知何故,html没有显示在页面中,但在开发者控制台中,F12,你可以看到html代码)