Also versuche ich auf den Angular Zug aufzuspringen, und ich wurde mit dem Aufbau eines SPA beauftragt, für den ich AngularJS mit ASP.Net MVC Web API ausgewählt habe (ich bin ein .Net Entwickler). Als Fan von stark typisierten Sprachen habe ich während meiner gesamten Karriere Javascript vermieden, aber Frameworks wie AngularJS und die anderen Plugins der letzten Jahre haben es unmöglich gemacht, sie zu ignorieren. Also bin ich hier und bitte um eine Anleitung.Angular Initialisierungsfehler in app.js
Ich habe mir die Tutorials angeschaut, die Beispielcode-Projekte gemacht und etwas über PluralSight gelernt, und ich habe Dinge, zumindest aus einer grundlegenden Perspektive. Ich habe einen reichen Hintergrund in MVVM und MVC, so SOC ist eine große Sache für mich. Ich mag die MVC-Struktur, die Angular bietet, weswegen ich hauptsächlich diesen Weg gegangen bin.
Jetzt lassen Sie mich zu meinem Problem (s) kommen. Ich initialisiere mein Modul (momentan) auf meiner Masterseite (_Layout.cshtml), was ich aus Gründen der Einfachheit beim Tweaking und Experimentieren getan habe.
<script>
angular.module('xcmApp', ['ngRoute', 'ngResource'])
.config(function ($routeProvider) {
$routeProvider
.when('/',
{
controller: 'companiesController',
templateUrl: 'views/companylist.html'
})
.when('/Reports',
{
controller: 'reportsController',
templateUrl: 'views/reportlist.html'
})
.otherwise({ redirectTo: '/' })
})
.factory('companiesFactory', ['$resource',
function ($resource) {
return $resource('/api/companies', {}, {
query: { method: 'GET', params: {}, isArray: true }
});
}
])
.controller('companiesController', function ($scope, companiesFactory) {
$scope.Companies = companiesFactory.query();
});
</script>
Aber jetzt, wo ich bin bereit, tiefe Konzepte zu bewegen, ich will hinaus in ihre entsprechenden Dateien meine Skripte brechen. Das heißt, app.js und zugehörigen Steuerungen/Fabriken/Dienstleistungen etc. Aber wenn ich mich bewege das Skript in app.js und verweisen Sie in _Layout.cshtml, es Fehler:
<script src="~/app.js"></script>
Error: [$injector:unpr] Unknown provider: a
Jetzt gibt es keinen Punkt in weiterhin in Controller-Dateien usw. auszubrechen, wenn ich nicht einmal die app.js richtig arbeiten kann, also bin ich hier festgefahren. Ich weiß, dass es hier einige brillante AngularJS-Entwickler gibt, die wahrscheinlich wissen, was ich vermisse, bevor ich überhaupt so weit gelesen habe, und ich bin dankbar für Ihre Unterstützung.
Jeder, der meine Aufsicht hervorheben kann, wird heute ein Superstar für mich sein. Danke im Voraus!
EDIT:
Hier ist mein Stack Trace:
0x800a139e - JavaScript runtime error: [$injector:modulerr] Failed to instantiate module xcmApp due to:
Error: [$injector:unpr] Unknown provider: a
http://errors.angularjs.org/1.3.15/$injector/unpr?p0=a
at Anonymous function (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:4015:13)
at getService (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:4162:11)
at invoke (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:4191:9)
at runInvokeQueue (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:4109:11)
at Anonymous function (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:4118:11)
at forEach (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:323:11)
at loadModules (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:4099:5)
at createInjector (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:4025:3)
at doBootstrap (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:1452:5)
at bootstrap (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js:1473:5)
http://errors.angularjs.org/1.3.15/$injector/modulerr?p0=xcmApp&p1=Error%3A%20%5B%24injector%3Aunpr%5D%20Unknown%20provider%3A%20a%0Ahttp%3A%2F%2Ferrors.angularjs.org%2F1.3.15%2F%24injector%2Funpr%3Fp0%3Da%0A%20%20%20at%20Anonymous%20function%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A4015%3A13)%0A%20%20%20at%20getService%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A4162%3A11)%0A%20%20%20at%20invoke%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A4191%3A9)%0A%20%20%20at%20runInvokeQueue%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A4109%3A11)%0A%20%20%20at%20Anonymous%20function%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A4118%3A11)%0A%20%20%20at%20forEach%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A323%3A11)%0A%20%20%20at%20loadModules%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A4099%3A5)%0A%20%20%20at%20createInjector%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A4025%3A3)%0A%20%20%20at%20doBootstrap%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A1452%3A5)%0A%20%20%20at%20bootstrap%20(http%3A%2F%2Fajax.googleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.15%2Fangular.js%3A1473%3A5)
ERINNERUNG:
Mein Problem ist nicht, dass es nicht funktioniert, es funktioniert. Es funktioniert nur, wenn ich das Javascript aus meiner HTML-Seite nehme und es in eine referenzierte Datei app.js lege.
Sie sind eine verkleinerte Version von Angular mit? Wenn Sie die unminifizierte Version von angular.js verwenden, erhalten Sie einen detaillierteren Fehler, der Ihnen helfen könnte. – Dylan
Ich benutze unminified Angular: //ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js – XamlZealot