2016-03-18 5 views
0

Ich benutze RequireJS, um AngularJS Controller zu laden, um meine Frontend HTML zu bedienen. Doch obwohl alle erforderlichen libs geladen werden, wirft es Ausnahme aus:Verwenden Sie RequireJS mit Angular throws out Ausnahme

[$injector:modulerr] Failed to instantiate module metaapp due to: Error: [$injector:nomod] Module 'metaapp' is not available! 

mir jemand aus dem Weg zeigen kann?

Hier ist meine Verzeichnisstruktur:

Directory Structure

metacontroller.js:

/*global define*/ 
'use strict'; 

define(['angular'], function(angular){ 
    return ['$scope', function($scope){ 
    $scope.test = "haha"; 
    } 
    ]; 
}); 

Index.HTML

<!doctype html> 
<html lang="en" data-framework="angularjs"> 
    <head> 

    </head> 
    <body ng-app="metaapp" ng-controller="MetaController"> 
    {{test}} 
    <script data-main="js/main" src="js/lib/require.js"></script> 
    </body> 
</html> 

0 app.js

main.js

/*global require*/ 
'use strict'; 


require.config({ 
    paths: { 
     angular: 'lib/angular' 
    }, 
    shim: { 
     angular: { 
      exports: 'angular' 
     } 
    }, 
    deps: ['app'] 
}); 

network in console

------------- Erstes Update ---------------- - den Controller aktualisieren - den Bereich durch $ scope ersetzen.

------------- Zweite Aktualisierung ---------------- In app.js, entfernen Sie die Abhängigkeiten Injektion. Aber immer noch nicht funktioniert ...

Fehler:

angular.js:63 Uncaught Error: [$injector:modulerr] Failed to instantiate module metaapp due to: Error: [$injector:nomod] Module 'metaapp' 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

---------------------- Update 3 ---- ---------------- ok, ich finde es heraus ... Ich habe diese Codezeile verpasst: angular.bootstrap(document, ['metaapp']); jetzt funktioniert es, weil ich die haha interpretiert auf HTML-Seite sehen kann. Allerdings kann ich immer noch die Fehler sehen, irgendwelche Gedanken?

Antwort

0

Nicht sicher, wie sich die beiden verschachtelten Module verhalten. Können sie zu einem verschmolzen werden?

/*global require*/ 
'use strict'; 

require([ 
    'angular', 
    'app/UserMeta/metacontroller', 
    'app/UserMeta/metaservice' 

], function (angular, metaCtrl, metaSrv) { 
    var app = angular.module('metaapp', [metaCtrl, metaSrv]); 
    app.controller('MetaController', metaCtrl); 
}); 
+0

'var app = angular.module ('metaapp ', []); app.controller ('MetaController', metaCtrl); '- gerade ausprobiert, funktioniert nicht ... ;-( – catlovespurple

+0

können Sie" nicht funktioniert "beschreiben? –

+0

' angular.js: 63 Uncaught Fehler: [$ injector : modulr] Fehler beim Instanziieren des Moduls metaapp aufgrund von: Fehler: [$ injector: nomod] Das Modul 'meta.app' ist nicht verfügbar! Sie haben den Modulnamen falsch geschrieben oder vergessen, ihn zu laden.Wenn Sie ein Modul registrieren, stellen Sie sicher, dass Sie die Abhängigkeiten angeben das zweite Argument " – catlovespurple