簡體   English   中英

角未捕獲參考$注入器

[英]Angular uncaught reference $injector

我剛接觸過angular,在設置項目時遇到麻煩。 我已經嘗試了我在google和stackoverflow上看到的所有內容(請不要發送鏈接到類似的問題)。 我使用角度1.5.5並參考CDN。 這是我的代碼的樣子。 謝謝!

<html ng-app="boatup">
<link href="css/one-page-wonder.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-route.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
</head>


<body ng-controller="mainCtrl">
</body>

//in app.js
var app = angular.module('boatup', [
'boatup.controllers',
'ngRoute'
]);

//in controllers.js
app.controller('mainCtrl', function($scope) {  
 console.log("hello");
});

錯誤是angular.js:38未捕獲的錯誤:angular.js 38中的[$ injector:modulerr]

感謝您的任何幫助。

當您使用沒有定義的模塊或沒有在腳本中加載具有模塊定義的文件時,會導致角度Uncaught reference error 您尚未聲明boatup.controllers模塊,但已將其添加為對主模塊的依賴。 聲明並定義boatup.controllers或將其作為依賴項移除,如下所示:

angular.module('boatup', [
  'ngRoute'
]);

用您的代碼替換它。

//in app.js
 angular.module('boatup', [
'ngRoute'
 ]);

//in controllers.js
angular.module('boatup')
.controller('mainCtrl', function($scope) {  
console.log("hello");
});

據我的描述所看到的,您已經開始使用項目的模塊創建不同文件的項目。 這是一個很好的決定。 但!

  1. 您實例化了主應用程序的模塊,並將其分配給全局變量app 沒什么大不了的,但是最好避免在全局范圍內創建不必要的變量。 而且,如果您在不同文件中使用gloabl變量app ,則會使用最后加載的文件進行改寫。
  2. 在主模塊之前,必須先將控制器裝入模塊。 否則,您將獲得[$ injector:modulerr]。

因此,在您的情況下,以下解決方案將起作用。

controllers.js

angular.module('boatup.controllers', [])
  .controller('mainCtrl', ['$scope', function($scope) {
    console.log('hello');
  }])

app.js

angular.module('boatup', ['ngRoute', 'boatup.controllers']);

並且您需要以適當的順序加載。

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular-route.min.js"></script>
<script src="controllers.js"></script>
<script src="app.js"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM