AngularJS无法同时使两个控制器工作

时间:2014-12-24 08:36:31

标签: angularjs

我正在开发一个基于AngularJS的应用程序。现在我有两个不同控制器的表。但只有一个控制器正在工作。控制器是彼此的副本,但差异很小。

如果我从代码中删除控制器B,则控制器A正在工作 如果我从代码中删除控制器A,则控制器B正在工作。

两个控制器都有自己的js文件。作为最后加载的控制器始终是正在运行的控制器。

两个控制器都不能同时工作。我也在控制台中收到此错误。

Error: [ng:areq] http://errors.angularjs.org/1.2.28/ng/areq?p0=aCtrl&p1=not%20aNaNunction%2C%20got%20undefined

在我的代码下方,因为发布了很多内容而被删除!我也无法使用jsfiddle处理所有代码(对很多依赖项)

aCtrl

(function() {
  'use strict';
  angular.module('app.tables', []).controller('aCtrl', [
    '$scope', '$filter', '$http', function($scope, $filter, $http) {
      var init;
      $http.get('/data/a.json').success(function(data) {
        $scope.stores = data;
        return init();
      });
      $scope.stores = [{}];
      // rest of the code

    }
  ]);

}).call(this);

bCtrl(a的副本)

(function() {
  'use strict';
  angular.module('app.tables', []).controller('bCtrl', [
    '$scope', '$filter', '$http', function($scope, $filter, $http) {
      var init;
      $http.get('/data/b.json').success(function(data) {
        $scope.stores = data;
        return init();
      });
      $scope.stores = [{}];
      // rest of the code

    }
  ]);

}).call(this);

适用于aCtrl的HTML

<div class="page page-table" data-ng-controller="aCtrl">
<table class="table table-bordered table-striped table-responsive">
  <tbody>
  <tr data-ng-repeat="store in currentPageStores">
    <td>{{store.col1}}</td>
    <td>{{store.col2}}</td>
    <td>{{store.col3}}</td>
    <td>{{store.col4}}</td>
  </tr>
  </tbody>
</table>
</div>

bCtrl的HTML

<div class="page page-table" data-ng-controller="bCtrl">
<table class="table table-bordered table-striped table-responsive">
  <tbody>
  <tr data-ng-repeat="store in currentPageStores">
    <td>{{store.col1}}</td>
    <td>{{store.col2}}</td>
    <td>{{store.col3}}</td>
    <td>{{store.col4}}</td>
  </tr>
  </tbody>
</table>
</div>

1 个答案:

答案 0 :(得分:3)

我认为这是重新创建模块的情况。你的电话

angular.module(&#39; app.tables&#39;,[])

创建一个模块。由于代码中有2个这样的实例,因此模块会被创建两次,第二个会覆盖第一个。删除第二个声明并将其更改为:

angular.module('app.tables').controller('bCtrl', [ //note the declaration now does not have [] as second parameter