6

Pracuję nad tutorialem kątowym i mam problem na początku. Ładowanie modułu myApp powoduje błąd. Jak wyjaśniono w samouczku, powinien to być jeden z trzech sposobów tworzenia kontrolera.

Oto print screen z samouczka pracuję nad: Creating controllers in tutorialsNiepowodzenie błędu: moduł "myApp" jest niedostępny! (AngularJS)

Kiedy odświeżyć stronę i uzyskać ten błąd w konsoli Chrome:

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. 

To jest mój plik HTML

<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> 

To jest mój plik app.js

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

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

Więc jaki jest mój problem? Nie mogę tego rozgryźć.

góry dziękuję

Odpowiedz

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.

Oryginalny problem wynika z nieprawidłowego tagu skryptu. Zasadniczo twój tag skryptu nie jest zamknięty, musi zostać zamknięty, aby przeglądarka mogła pobrać plik app.js. Znaczniki skryptów nie są samozamykające się, więc potrzebują tagu zamykającego.

<script src="app.js"> 

powinny być

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

Teraz gdy już naprawić, że dostaniesz do innego błędu.

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

Ponieważ używasz najnowszej wersji kątowej, tj coś> = 1.3.x potrzebuje sterownika do rejestracji ręcznie za pomocą .controller konstrukt. See here for more details.

Uwaga - jest to nieco mylące, ponieważ na zrzucie ekranu widać, że używasz 1.2.0 (co niekoniecznie wymaga jawnej rejestracji kontrolera), ale fragment w pytaniu pokazanym 1.4.x.

+2

Ładne oczy .. +1 sir –

+0

masz rację! naprawdę ładne oczy ... dziękuję! –

+2

:) dzięki chłopaki .. – PSL

4

Należy zarejestrować controller kątowej modułu myApp.

App.js

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

zasadzie to, co robisz jest poprawna, ale że kod został następnie starszej wersji angularjs, sposób uznany kontroler jest niczym innym, znanym jako kontrolera jako funkcja , który wymaga umożliwienia allowGlobals() metody . Ponieważ metoda Angular 1.3 + allowGlobals() została wyłączona przez dodanie poniższego kodu, można ją włączyć, aby kod działał, ale nie jest to zalecana metoda.

Config

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

sprawdź sam SO Answer tutaj

2

Spróbuj tego:

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

Dyrektywa ng-controller poszukuje MainController w module MojaApl.

Powiązane problemy