Dies ist meine Demo mit anglejs, um eine Servicedatei zu erstellen und einem Controller einen Service hinzuzufügen.
Ich habe zwei Probleme mit meiner Demo:
- Eine ist, wenn ich setze,
<script src="HomeController.js">
bevor<script src="MyService.js">
ich diesen Fehler erhalte,
Fehler: [ng: areq] Argument 'HomeController' ist keine Funktion, wurde undefiniert
- Das andere ist, wenn ich setze,
<script src="MyService.js">
bevor<script src="HomeController.js">
ich den folgenden Fehler erhalte:
Fehler: [$ injor: unpr] Unbekannter Anbieter: MyServiceProvider <- MyService
Meine Quelle:
Datei Index.html
:
<!DOCTYPE html>
<html >
<head lang="en">…</head>
<body ng-app="myApp">
…
<div ng-controller="HomeController">
<div ng-repeat="item in hello">{{item.id + item.name}}</div>
</div>
<script src="Scripts/angular.js"></script>
<script src="Scripts/angular-route.js"></script>
<!-- App libs -->
<script src="app/app.js"></script>
<script src="app/services/MyService.js"></script>
<script src="app/controllers/HomeController.js"></script>
</body>
</html>
Datei HomeController.js
:
(function(angular){
'use strict';
var myApp = angular.module('myApp',[]);
myApp.controller('HomeController',function($scope,MyService){
$scope.hello=[];
$scope.hello = MyService.getHello();
});
})(window.angular);
Datei MyService.js
:
(function(angular){
'use strict';
var myApp = angular.module('myApp',[]);
myApp.service('MyService', function () {
var hello =[ {id:1,name:'cuong'},
{id:2,name:'nguyen'}];
this.getHello = function(){
return hello;
};
});
})(window.angular);
javascript
angularjs
angularjs-service
Cuong.Ho
quelle
quelle
Antworten:
Dadurch wird ein neues Modul / eine neue App erstellt:
Während dies auf ein bereits erstelltes Modul zugreift ( beachten Sie das Weglassen des zweiten Arguments ):
Da Sie für beide Skripte den ersten Ansatz verwenden, überschreiben Sie grundsätzlich das zuvor erstellte Modul.
Verwenden Sie beim zweiten geladenen Skript
var myApp = angular.module('myApp');
.quelle
Ich habe diesen Fehler einmal erlebt. Mein Problem war, dass ich die Datei FILE_NAME_WHERE_IS_MY_FUNCTION.js nicht hinzugefügt habe
Meine Datei.html hat also nie gefunden, wo meine Funktion war
quelle
Stellen Sie außerdem sicher, dass Ihre Controller in Skript-Tags am Ende Ihrer index.html unmittelbar vor dem schließenden Tag für body definiert sind.
vorausgesetzt, auf Ihren Seiten "large.html", "actual.js" und "app.js" ist alles "richtig" (gleich) geschrieben, sollte dies Ihr Problem beheben.
quelle
Ist mir ein paar Mal passiert, wenn ich "" zwischen der Liste der Injektionen und der Funktion vermisse
quelle
app.controller('commonCtrl' ['$scope', '$filter',function($scope,$filter) { }]);
Ich habe diesen Fehler auch festgestellt, aber in meinem Fall lag dies an der Namenskonvention des Controllers. Ich erklärte
controller: "QuestionController"
in.state
aber in Controller - Definition erklärte ich mag esaber es sollte sein
Ich hoffe, das hilft Menschen, die wegen dieses dummen Fehlers mit diesem Fehler konfrontiert sind. Ich habe 4 Stunden damit verbracht, ihn zu identifizieren.
quelle
Ich habe den gleichen Fehler bekommen. Ich habe Java-Skript so definiert
dann habe ich das geändert
Danach ist mein Problem gelöst.
quelle
Ich bin auch auf denselben Fehler gestoßen, und die Korrektur für mich bestand darin, mein untergeordnetes Modul in das Hauptmodul-Array aufzunehmen.
quelle
Wenn ALL ELSE fehlschlägt und Sie lokal auf dem MEAN-Stack laufen wie ich mit Schluck ... hören Sie einfach auf und servieren Sie erneut! Ich habe mein Gehör herausgezogen und alles von all deinen Posts akribisch überprüft, ohne Erfolg, bis ich einfach den Schluckaufschlag erneut ausgeführt habe.
quelle
Ich hatte ein ähnliches Problem. Das Update bestand darin, sicherzustellen, dass Ihre Controller nicht nur in Skript-Tags am unteren Rand Ihrer index.html unmittelbar vor dem schließenden Tag für body definiert sind, sondern AUCH zu überprüfen, ob sie in der Reihenfolge der Struktur Ihres Ordners angeordnet sind.
quelle
Dieses Problem ist auch in meinem Projekt aufgetreten. Es funktionierte schließlich, nachdem ich das mit dem Tag
my-controller.js
in meinekarma.conf.js
Datei eingefügt hatte<script>
.Hoffe das wird helfen. Es gibt viele Gründe, die zu diesem Problem führen können.
quelle
Ich habe auch diesen Fehler bekommen.
Ich musste meinen neuen Controller zu den Routing-Informationen hinzufügen. \ src \ js \ app.js.
Ich habe meinen Controller hinzugefügt, damit er so aussieht
Prost!
quelle
Natürlich sind frühere Beiträge nützlich, aber in meinem Fall sind die oben genannten nicht hilfreich. Der Grund war die falsche Reihenfolge beim Laden von Skripten . In meinem Fall hängt der Controller editCtrl.js beispielsweise von ui-bootstrap-tpls.js ab (verwendet ihn), daher sollte er zuerst geladen werden. Dies verursachte einen Fehler:
Das ist richtig, funktioniert:
Um den Fehler zu beheben, müssen Sie zuerst alle Skripte ohne Abhängigkeiten deklarieren und dann Skripte, die von zuvor deklarierten Skripten abhängen.
quelle
Versuche dies
quelle
In meinem Fall fehlte mir der Name der Angular-Anwendung in der HTML-Datei. Zum Beispiel hatte ich diese Datei als Start meines Anwendungscodes eingefügt. Ich hatte angenommen, dass es ausgeführt wurde, aber es war nicht so.
app.module.js
Als ich die App jedoch im HTML-Code deklarierte, hatte ich Folgendes:
index.html
Um die Angular-Anwendung mit dem von mir verwendeten Namen zu referenzieren, musste ich Folgendes verwenden:
index.html (behoben)
quelle
Ich habe den Fehler erhalten, weil ich das Controller-Skript vor dem Skript hinzugefügt hatte, in dem ich das entsprechende Modul in der App definiert hatte. Fügen Sie zuerst das Skript hinzu
Dann nur noch hinzufügen
In der Hauptdatei.
quelle
Fehler: ng: areq Bad Argument hat mich ein paar Mal erwischt, weil ich die eckige Klammer zu früh schließe. Im folgenden BAD-Beispiel wird es nach '$ state' falsch geschlossen, wenn es tatsächlich vor der endgültigen Parenthese stehen soll.
SCHLECHT:
GUT:
quelle
Ja. Wie viele bereits erwähnt haben, habe ich allen Controller-Dateien in der index.html den Pfad src hinzugefügt.
Dies hat diesen Fehler behoben.
quelle
Ich hatte das gleiche Problem, aber ich habe vergessen, die Datei in den Grunz- / Schluck-Minimierungsprozess einzubeziehen.
Hoffentlich hilft das.
quelle
In meiner Situation trat dieser Fehler auf, als ich keine Funktion innerhalb eines Array-Arguments deklarierte.
Der mit dem Fehler :
Der feste:
quelle
Überprüfen Sie auch auf Rechtschreibfehler .
quelle
Überprüfen Sie, ob Ihre HTML-Seite Folgendes enthält:
angular.min
Skriptapp.js
Die Reihenfolge, in der die Dateien enthalten sind, ist wichtig. Es war meine Lösung für dieses Problem.
Hoffe das hilft.
quelle
Dasselbe für mich, Komma ',' vor der Funktion, half mir bei der Behebung des Problems - Fehler: ng: areq Schlechtes Argument
quelle
Meine Controller-Datei wurde als leer zwischengespeichert. Durch das Löschen des Caches wurde das Problem für mich behoben.
quelle
Ich habe versehentlich meine HomeController.js direkt aus dem Bereich verschoben , in dem dies erwartet wurde. Setzen Sie es wieder an den ursprünglichen Ort.
Nachdem meine Website begann, Seiten jede Sekunde automatisch zu laden, konnte ich den Fehler nicht einmal mehr sehen. Also habe ich den Browser-Cache geleert. Es hat das Problem gelöst
quelle