2014-03-01 88 views
0

我剛剛在幾天前開始使用AngularJS進行開發,而這個問題真的讓我感到困擾。AngularJS:無法定義控制器

我不斷收到此錯誤:

Error: ng:areq 
Bad Argument 
Argument 'NewStudentCtrl' is not a function, got undefined 

所有其他控制器的工作,因爲我在其他文件中使用它們,只是​​3210將無法​​正常工作。 我已經嘗試了很多不同的東西,只有一個工作:在使用控制器之前,在HTML文件本身內部使用function NewStudentCtrl ($scope) {}來定義控制器。問題是我想將HTML和JS拆分爲單獨的文件。

請注意,提供的源代碼被簡化了很多,可能會有少許縮進或語法錯誤。

<html ng-app="myApp"> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script> 
    <script>var app = angular.module('myApp',[]);</script> 
</head> 
<body> 
    <div ng-controller="NewStudentCtrl"> 
    <div ng-controller="AccountMenuCtrl"> 
    </div> 

    <script src="js/account-menu.js"> 
     function AccountMenuCtrl ($scope) { 
    } 
    </script> 

    <div ng-controller="OrtsteileCtrl"> 
     <option value="{{ortsteil.ID}}" ng-repeat="ortsteil in ortsteile"> 
      {{ortsteil.Name}} 
     </option> 
    </div> 

    </div> <!-- end NewStudentCtrl --> 

    <!-- Loading dependencies --> 
    <script src="js/jquery-1.8.3.min.js"></script> 
    <script src="js/bootstrap.min.js"></script> 
    <script src="js/new-student.js"> 
    var app = angular.module("myApp"); 

    function NewStudentCtrl ($scope) { 
    } 
    </script> 
    <script src="js/plz.js"> 
    angular.module('myApp').controller('OrtsteileCtrl', ['$scope', '$http', 
     function($scope, $http) { 

    }]); 
    </script> 
</body> 
</html> 
+0

你在哪裏定義了'NewStudentCtrl'? –

+0

在這個簡化版本中,定義在第30行。 –

+0

爲什麼不像定義'OrtsteileCtrl'那樣定義它? –

回答

1

編輯:從頭開始,我沒有意識到的是棱角很滿意混合它們。

的問題是,因爲你現在重新創建你的模塊幾次:

4號線:<script>var app = angular.module('myApp',[]);</script>

第28行:var app = angular.module("myApp");

第34行:angular.module('myApp').controller(...

小提琴:http://jsfiddle.net/uXpqL/

+0

我改變了代碼使用'app'而不是'angular.module()',並沒有改變一件事 –

+0

只是爲了檢查一些東西,但是當你在你的問題中有:''你不是真的有'src'定義和腳本內容以及?這只是顯示你的外部文件的內容? –

+0

因爲除了多模塊聲明和'src'標記之外,這很好:http://plnkr.co/edit/5mMxvNf2dNVZ7XQoYG5F?p=info –