Ceci est ma démo utilisant angularjs, pour créer un fichier de service et ajouter un service à un contrôleur.
J'ai deux problèmes avec ma démo:
- La première est quand je mets
<script src="HomeController.js">
avant<script src="MyService.js">
que j'obtienne cette erreur,
Erreur: [ng: areq] L'argument 'HomeController' n'est pas une fonction, n'est pas défini
- L'autre est quand je mets
<script src="MyService.js">
avant<script src="HomeController.js">
que j'obtienne l'erreur suivante,
Erreur: [$ injector: un] Fournisseur inconnu: MyServiceProvider <- MyService
Ma source:
Fichier 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>
Fichier 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);
Fichier 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
la source
la source
Réponses:
Cela crée un nouveau module / application:
Pendant que cela accède à un module déjà créé ( notez l'omission du deuxième argument ):
Puisque vous utilisez la première approche sur les deux scripts, vous remplacez fondamentalement le module que vous avez créé précédemment.
Sur le deuxième script en cours de chargement, utilisez
var myApp = angular.module('myApp');
.la source
J'ai rencontré cette erreur une fois. Mon problème était que je n'ajoutais pas le fichier FILE_NAME_WHERE_IS_MY_FUNCTION.js
donc mon fichier.html n'a jamais trouvé où était ma fonction
la source
Assurez-vous également que vos contrôleurs sont définis dans les balises de script vers le bas de votre index.html juste avant la balise de fermeture pour body.
à condition que tout soit orthographié «correctement» (le même) sur vos pages specific.html, specific.js et app.js, cela devrait résoudre votre problème.
la source
M'arrive quelques fois à chaque fois que je rate "," entre la liste des injections et la fonction
la source
app.controller('commonCtrl' ['$scope', '$filter',function($scope,$filter) { }]);
J'ai également rencontré cette erreur, mais dans mon cas, c'était à cause de la convention de dénomination du contrôleur. J'ai déclaré
controller: "QuestionController"
dans.state
mais dans la définition du contrôleur, je l'ai déclaré commemais ça devrait être
J'espère que cela aide les personnes confrontées à cette erreur à cause de cette erreur stupide que j'ai perdue 4 heures à l'identifier.
la source
J'ai eu la même erreur. J'ai défini le script java comme ceci
puis j'ai changé pour ça
Après cela, mon problème est résolu.
la source
J'ai également rencontré cette même erreur et le correctif pour moi était d'inclure mon module enfant dans le tableau de modules principal.
la source
Si ALL ELSE échoue et que vous exécutez localement sur la pile MOYENNE comme moi avec gulp ... arrêtez-vous et servez à nouveau! J'étais en train de sortir mon écoute en vérifiant méticuleusement tout de tous vos messages en vain jusqu'à ce que j'ai simplement relancé le service gulp.
la source
J'ai eu un problème similaire. Le correctif était de s'assurer que vos ctrollers ne sont pas seulement définis dans les balises de script vers le bas de votre index.html juste avant la balise de fermeture pour body, mais également de valider qu'ils sont dans l'ordre de la structure de votre dossier.
la source
J'ai également rencontré ce problème dans mon projet. Cela a finalement fonctionné après avoir inséré le
my-controller.js
dans monkarma.conf.js
fichier, avec la<script>
balise.J'espère que cela aidera. De nombreuses raisons peuvent conduire à ce problème.
la source
J'ai aussi eu cette erreur.
J'ai dû ajouter mon nouveau contrôleur aux informations de routage. \ src \ js \ app.js
J'ai ajouté ma manette pour qu'elle ressemble à
À votre santé!
la source
Évidemment, les messages précédents sont utiles, mais aucun des éléments ci-dessus ne sont utiles dans mon cas. La raison était une mauvaise séquence de chargement des scripts . Par exemple, dans mon cas, le contrôleur editCtrl.js dépend de (utilise) ui-bootstrap-tpls.js, il doit donc être chargé en premier. Cela a provoqué une erreur:
C'est vrai, ça marche:
Ainsi, pour corriger l'erreur, vous devez d' abord déclarer tous les scripts sans dépendances , puis les scripts qui dépendent de ceux précédemment déclarés.
la source
Essaye ça
la source
Dans mon cas, il me manquait le nom de l'application Angular dans le fichier html. Par exemple, j'avais inclus ce fichier pour démarrer le code de mon application. J'avais supposé qu'il était diffusé, mais ce n'était pas le cas.
app.module.js
Cependant, lorsque j'ai déclaré l'application dans le html, j'avais ceci:
index.html
Mais pour référencer l'application Angular par le nom que j'ai utilisé, j'ai dû utiliser:
index.html (fixe)
la source
J'obtenais l'erreur parce que j'avais ajouté le script du contrôleur avant le script où j'avais défini le module correspondant dans l'application. Ajoutez d'abord le script
Ensuite, ajoutez seulement
Dans le fichier principal.
la source
Erreur: ng: areq Bad Argument m'a obtenu plusieurs fois parce que je ferme le crochet trop tôt. Dans l'exemple BAD ci-dessous, il est fermé de manière incorrecte après '$ state' alors qu'il devrait en fait aller avant la parenthèse finale.
MAUVAIS:
BIEN:
la source
Oui. Comme beaucoup l'ont déjà souligné, j'ai ajouté le chemin src à tous les fichiers de contrôleur dans l'index.html.
Cela a corrigé cette erreur.
la source
J'ai eu le même problème, mais j'ai oublié d'inclure le fichier dans le processus de minimisation grunt / gulp.
J'espère que cela pourra aider.
la source
Dans ma situation, cette erreur est apparue lorsque je n'ai pas déclaré de fonction dans un argument de tableau.
Celui avec l' erreur :
Le fixe:
la source
Vérifiez également les fautes d'orthographe .
la source
Vérifiez si votre page HTML comprend:
angular.min
scénarioapp.js
L'ordre dans lequel les fichiers sont inclus est important. C'était ma solution à ce problème.
J'espère que cela t'aides.
la source
Même chose pour moi, virgule ',' avant que la fonction ne m'a aidé à résoudre le problème - Erreur: ng: areq Bad Argument
la source
Mon fichier de contrôleur a été mis en cache comme vide. Effacer le cache a résolu le problème pour moi.
la source
J'ai accidentellement déplacé mon HomeController.js hors du directement, là où il était prévu. Remettre à l'emplacement d'origine.
Après cela, mon site Web a commencé à charger des pages automatiquement toutes les secondes, je n'ai même pas pu regarder l'erreur. J'ai donc effacé le cache du navigateur. Cela a résolu le problème
la source