$ routeProvider没有加载模板

时间:2016-05-06 21:41:38

标签: angularjs

更新:问题结果是意外清除了服务中的所有模块。

这是有效的提交,repo。这是导致问题的代码link。我仍然不知道这里出了什么问题。

经过一些试验,我认为这是因为我使用promise来获取数据。我也在应用程序中使用d3Promise,并得到相同的bug,指令没有再次加载(这次,菜单指令也失败了)。

一个奇怪的错误。

添加menu指令后,map指令不会加载到页面中。它就在那之前的页面中。

在chrome控制台和grunt服务器中都没有错误。

我花了一些时间调试。我发现$ routeProvider不起作用。它只会更改url,但不会加载partials并绑定partials的控制器。

以下是代码:

index.html中的

<body ng-app="SFM">
<!-- Add your site or application content here -->
<div class="container">
  <div class="header">
    <h3 class="text-muted">SF-Muni</h3>
    <a ng-href="#/about" class="btn">about</a>
  </div>

  <div menu></div>

  <div ng-view></div>
 </div>
 <!-- other vender files -->
 <script src="scripts/app.js"></script>

 <!-- utilities -->

 <!-- services -->
 <script src="scripts/services/d3service.js"></script>
 <script src="scripts/services/muniService.js"></script>

 <!-- controllers -->
 <script src="scripts/controllers/main.js"></script>
 <script src="scripts/controllers/about.js"></script>

 <!-- directives -->
 <script src="scripts/directives/menu.js"></script>
 <script src="scripts/directives/map.js"></script>
</body>

app.js:

'use strict';
angular
    .module('SFM', [
        'ngResource',
        'ngRoute',
        'd3'
    ])
    .config(function ($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'views/main.html',
                controller: 'MainCtrl'
            })
           .when('/about', {
                templateUrl: 'views/about.html',
                controller: 'AboutCtrl'
           })
          .otherwise({
               redirectTo: '/'
          });
    });

1 个答案:

答案 0 :(得分:0)

据我所知,忘记请求将$ routeProvider注入config函数。

试试这个:

.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider
        .when('/', {
            templateUrl: 'views/main.html',
            controller: 'MainCtrl'
        })
       .when('/about', {
            templateUrl: 'views/about.html',
            controller: 'AboutCtrl'
       })
      .otherwise({
           redirectTo: '/'
      });
  }]);