6

私は角度チュートリアルに取り組んでおり、始めに問題があります。 myAppモジュールをロードするとエラーがスローされます。チュートリアルで説明したように、これはコントローラを作成する3つの方法の1つである必要があります。ここで

私が働いているのチュートリアルからの印刷画面です: Creating controllers in tutorials未知のエラー:モジュール 'myApp'は利用できません! (AngularJS)

私は、Webページを更新すると、私はクロームコンソールでこのエラーを取得:

Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to: 
Error: [$injector:nomod] Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument. 

これは

<html ng-app="myApp"> 
     <head> 
     </head> 
     <body> 
      <h1>Hello world!</h1> 

      <div ng-controller="MainController"> 
       {{ 2+2 }} 
       <br> 
       {{ val }} 
      </div> 
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script> 
      <script src="app.js"> 
     </body> 
    </html> 
私のHTMLファイルです。

これは私のapp.jsファイルです

var myApp = angular.module('myApp', []); 

var MainController = function($scope){ 
    $scope.val = "Main controller variable value" 
} 

私の問題は何ですか?私はそれを理解することはできません。

は角モジュールmyAppcontrollerあなたを登録する必要があり、事前に

答えて

9

Module 'myApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

元の問題は無効なスクリプトタグが原因です。基本的にあなたのスクリプトタグは閉じられていないので、ブラウザがapp.jsファイルをダウンロードするために閉じる必要があります。スクリプトタグは自己終了ではないため、終了タグが必要です。あなたが別のエラーになりますことを修正したら

<script src="app.js"> 

は今

<script src="app.js"></script> 

でなければなりません。

[ng:areq] Argument 'MainController' is not a function, got undefined

最新の角度バージョンを使用しているので、すなわち何も> = 1.3.xのは、.controller構文を使用して手動で登録するコントローラを必要とします。 See here for more details

注 - スクリーンショットに1.2.0(必ずしも明示的なコントローラ登録が必要ない)が表示されていますが、1.4.xの質問のスニペットが混乱しています。

+2

ニースの目.. +1 –

+0

あなたは正しいです!本当に素敵な目.. ..ありがとう! –

+2

:)ありがとうございました.. – PSL

4

、ありがとうございました。

App.js

var myApp = angular.module('myApp', []); 
myApp.controller('MainController', MainController); 
var MainController = function($scope){ 
    $scope.val = "Main controller variable value" 
} 

は、基本的にはあなたが何をしていたが正しいですが、そのコードは、あなたのコントローラを宣言した方法は何もない、AngularJSの古いバージョンが続くが、機能としては、コントローラとして知られていますallowGlobals()メソッドが$controllerProviderであることが必要です。 Angular 1.3 + allowGlobals()メソッドは以下のコードを追加することで無効になっているので、コードを有効にするためにオンにすることができますが、これを行うのはお勧めできません。

コンフィグ

myApp.config(['$controllerProvider', 
    function($controllerProvider) { 
    $controllerProvider.allowGlobals(); 
    } 
]); 

がここに同じSO Answerを参照してください

2

これを試してみてください:

myApp.controller ("MainController",[$scope, function ($scope){ 
     $scope.val = "Main controller variable value" 
}]); 

ng-controllerディレクティブは、あなたのMyAppモジュールにメインコントローラを探します。

関連する問題