2015-06-26 88 views
2

我想使用angularjs進行div排序(拖放)。我做了一個工作正常的演示。但是當我在項目中實現它會給出一個錯誤。ng:areq參數不是函數,在AngularJS中未定義

看下面的代碼。

<div ng-app="reportingModule"> 
<div class="container-fluid" ng-controller="sortableController" ng-init="chartCollection = @JsonConvert.SerializeObject(chartViewModelCollection)"> 
    <ul id="dashboard" ui-sortable ng-model="chartCollection"> 
     <li ng-repeat="chart in chartCollection" ng-style="setColour(chartCollection.length)"> 
      <div> 
       ... 
       ... 
       ... 
      </div> 
     </li> 
    </ul> 
</div> 

我有兩個用於維護代碼標準的JS文件。

SortingJS.js

angular.module('reportingModule', ['ui.sortable']) 
.controller("sortableController", function ($scope) { 
    var tmpList = []; 
    $scope.sortingLog = []; 

    $scope.sortableOptions = { 
     stop: function (e, ui) { 
      // this callback has the changed model 
      var logEntry = tmpList.map(function (i) { 
       return i.value; 
      }).join(', '); 
      $scope.sortingLog.push('Stop: ' + logEntry); 
     } 
    }; 
}) 

ReportingMenu.js:

angular.module('reportingModule') 
    .controller('reportingMenuController', ["$rootScope", "$scope", "chartDetailsService", "reportingFocus", function ($scope, $rootScope, chartDetailsService, reportingFocus) { 
     ... 
     ... 
     ... 
]) 

[ng:areq] Argument 'reportingMenuController' is not a function, got undefined錯誤。

當我從sorting.js文件中刪除['ui.sortable']錯誤消失..但排序也無法正常工作。

回答

0

作爲角module guide page的「創建與檢索」一節中所述,

要注意的是使用angular.module(「Mymodule中」,[])將創建 模塊Mymodule中和覆蓋任何現有模塊名爲myModule。使用 angular.module('myModule')檢索現有模塊。

所以,看起來你要麼有另一個文件創建你的「reportingModule」模塊或這些文件的順序是不正確的。我的錯誤是前者。

確保模塊是創建的只有一次(只有一個文件有angular.module('reportingModule',[...]))並確保該文件是您的第一個引用的模塊文件index.html的。

相關問題