2016-03-31 2 views
-3

Ich bin ziemlich neu zu eckig und versuche, eine eckige Seite zu laufen, aber egal was ich versuche, laufe ich ständig in einen Fehler, der sagt, dass ich kein eckiges Modul erstellt habe.Winkelseite mit Factory, Service und Controller

Nicht bestandene Modul HotelApp aufgrund instanziiert: Fehler: [$ Injektor: nomod] http://errors.angularjs.org/1.5.3/ $ Injektor/nomod p0 = Hote ... bla bla bla

mein Code wie dieser

(function() { 
      "use strict"; 
      angular.module(APPNAME) 
       .factory('$hotelService', hotelServiceFactory); 

      hotelServiceFactory.$inject = ['$methodRepository', $methodRepository]; 

      function hotelServiceFactory($methodRepository) { 
       var hotelServiceObject = AjaxScripts; 
       console.log("Hotel Service", hotelServiceObject); 
      } 
     })(); 

     (function() { 
      "use strict"; 

      angular.module(APPNAME) 
       .controller("HotelController", hotelController); 

      hotelController.$inject = ['$scope', '$hotelService']; 

      function TracksController($scope, $hotelService) { 
aussieht?

ich bin meistens verwirrt darüber, warum es sagt, dass mein Modul nicht, während ich die APPNAME Variable sowohl in der Schrift und in dem ng-App

bearbeitet speziell instanziiert wird erklärt habe ich zur Zeit

(function() { 
       "use strict"; 
       angular.module("HotelApp", []) 
        .factory('$hotelService', hotelServiceFactory); 

       hotelServiceFactory.$inject = ['$methodRepository', $methodRepository]; 

       function hotelServiceFactory($methodRepository) { 
        var hotelServiceObject = AjaxScripts; 
        console.log("Hotel Service", hotelServiceObject); 
       } 
      })(); 

doch ist es immer noch nicht funktioniert ..

+0

Der Titel könnte die Frage geschlossen bekommen. Aktualisiere es. – Tushar

+0

Sie können auf den Link errors.angularjs.org klicken (oder kopieren Sie einfügen) und haben tatsächlich eine Erklärung, warum Sie diesen Fehler erhalten. die anderen Leute haben das Problem sowieso schon richtig aufgezeigt. – mentat

+0

entfernen Sie die sofortige Aufruffunktion, Ihr Code wird funktionieren. –

Antwort

2

Wo erstellen Sie das Modul. Das Modul muss auf diese Weise erstellt werden. angular.module('APPNAME',[]); Dann können Sie angular.module('APPNAME') verwenden, um Controller zu erstellen, Fabrik oder ... Aber nur beim Erstellen Modul [] (für Abhängigkeitsinjektion) innerhalb Modul sollte da sein.

+0

Ich verstehe, was du sagst. APPNAME ist nicht der tatsächliche Name ist eine Variable, die einen Wert der App tatsächlichen Namen hat 'HotelApp' – NVA

+0

Dann zeigen Sie den vollständigen Code, wo Sie das Modul mit Abhängigkeit initialisieren. Und wo diese Variable ist. – Max

+0

Das sollte funktionieren ....(Function() { "use strict"; angular.module ("HotelApp", []) .factory ('$ Hotelservice', hotelServiceFactory). hotelServiceFactory $ injizieren = [ '$ methodRepository']; Funktion hotelServiceFactory ($ methodRepository) { var hotelServiceObject = AjaxScripts; console.log ("Hotelservice", hotelServiceObject); } })(); – Max

0

Sie verlassen den 2nd Parameter, der [] dh DI (Dependency Injection) in module

angular.module('APPNAME', []) 
0

change this

angular.module(APPNAME) 

With this

angular.module('HotelApp',[]) 
0

erste Schritt in Winkel ist Modul ein Ausgangspunkt für Ihre App, wo Sie so schreiben

angular.module('APPNAME',[]); 

erste Parameter bezieht sich auf Ihre Anwendungsnamen und die zweite ist Dependency Injection bedeutet, dass Ihre App weitere Anforderung wie alle Plugins, Dienstleistungen, Richtlinien ... etc

+0

Ich habe das versucht, aber es scheint nicht das Problem zu sein. – NVA

+0

haben Sie 'ng-app =" APPNAME "' in Ihrem Hauptindex.html eingeschlossen –

1

Die hotelServiceFactory.$inject Eigenschaft falsch definiert.

//DO this 
hotelServiceFactory.$inject = ['$methodRepository']; 
//NOT this 
//hotelServiceFactory.$inject = ['$methodRepository', $methodRepository]; 

function hotelServiceFactory($methodRepository) { 
    var hotelServiceObject = AjaxScripts; 
    console.log("Hotel Service", hotelServiceObject); 
} 

Das verursacht einen Kompilierungsfehler.


Auch die Controller-Deklaration stimmt nicht mit dem Namen der Steuerungsfunktion überein.

angular.module(APPNAME) 
    .controller("HotelController", hotelController); 

hotelController.$inject = ['$scope', '$hotelService']; 

//DO this 
function hotelController($scope, $hotelService) { 
//NOT this 
//function TracksController($scope, $hotelService) { 
Verwandte Themen