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



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

路线.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: '/' });

控制器包含在索引中.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>

我的控制器实际上是相同的 - 例如,向您展示索引和产品:

控制器索引.js:

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

控制器-产品.js:

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

但这是奇怪的部分 - 当我到达"/"页面时,我没有将控制器日志发送到控制台。 没有错别字,因为如果我将控制器的名称更改为错误的控制器名称,则会在控制台中收到错误。

但是当我转到/Products 时,我按预期得到了"嗨"。

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

谁能帮我弄清楚这一点?谢谢你的时间。

您能否尝试向路由提供程序添加其他情况: otherwise({ redirectTo: '/' });

您可以

像这样指定默认路由

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


但我建议你从项目开始就使用 ui-router。它支持普通ngRoute可以做的所有事情以及许多额外的功能。

相关内容

最新更新