Angular.js - 控制器不执行索引,适用于其余模板

时间:2016-03-05 23:31:15

标签: javascript angularjs controller ngroute

我有这个奇怪的问题 - 我在我的应用程序中使用Angular' ngRoute。 我有不同的模板控制器,例如:

routes.js:

angular.module('PokeApp', ['ngRoute'])
  .config(function($routeProvider){
    $routeProvider
    .when('/', {
      templateUrl: '../templates/template-index.html',
      controller: 'IndexController'
    })
    .when('/products', {
      templateUrl: '../templates/template-products.html',
      controller: 'ProductsController'
    })
    .when('/events', {
      templateUrl: '../templates/template-events.html',
      controller: 'EventsController'
    })
    .otherwise({ redirectTo: '/' });

控制器包含在index.html中,如下所示:

<!-- Scripts -->
<script src="js/angular.min.js"></script>
<script src="js/angular-route.min.js"></script>

<script src="js/routes.js"></script>

<script src="js/controllers/controller-index.js"></script>
<script src="js/controllers/controller-products.js"></script>
<script src="js/controllers/controller-events.js"></script>

我的控制器实际上是相同的 - 例如,恶意显示索引和产品:

控制器index.js:

angular.module('PokeApp')
.controller('IndexController', function($scope) {
  // for testing purposes
  console.log("hi");

  ..

});

控制器products.js:

angular.module('PokeApp')
.controller('ProductsController', function($scope) {
  // again, for testing
  console.log("hi");

  ..

});

但这里有一个奇怪的部分 - 当我到达&#39; /&#39;页面,我没有让控制器登录到控制台。没有拼写错误,因为如果我更改错误的控制器名称,我会在控制台中收到错误。

但是当我去/产品时,我得到了&#39; hi&#39;如预期的那样。

我检查了我能想到的一切 - 错别字,错误的位置,stackoverflow的线程。我只是无法弄清楚为什么索引控制器拒绝工作,而其他人(我还有一些)按预期工作。

任何人都可以帮我解决这个问题吗?谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

您是否可以尝试向路由提供商添加其他情况: otherwise({ redirectTo: '/' });

答案 1 :(得分:0)

您可以像这样指定默认路线

$routeProvider
    .when('/index', {
        templateUrl: '../templates/template-index.html',
        controller: 'IndexController',
    })
    .otherwise({ redirectTo: '/index' });

<小时/> 但我建议您从项目开始使用ui-router。 它支持正常ngRoute可以执行的所有操作以及许多额外功能。