Erreur Angularjs : [$injector:modulerr] lors de la migration vers la V1.3
Dans Angularjs, l'erreur [$injector:modulerr] indique un problème de dépendance de module, en particulier lors de la migration des versions antérieures vers la V1.3.
Code Angularjs pré-V1.3 :
<code class="html"><body>
<div ng-controller="Ctrl">
...
<script>
var Ctrl = function($scope) {
...
};
</script>
</div>
</body></code>
Copier après la connexion
Post -V1.3 Code Angularjs :
<code class="html"><body ng-app="app">
<div ng-controller="Ctrl">
...
</div>
<script>
function Ctrl($scope) {
...
}
angular.module('app', [])
.controller('Ctrl', ['$scope', Ctrl]);
</script>
</body></code>
Copier après la connexion
Modifications avec la V1.3 :
-
Déclaration globale du contrôleur désactivée : Après Angularjs V1.3, les fonctions globales du contrôleur ne peuvent plus être déclarées en dehors d'un module. Au lieu de cela, les contrôleurs doivent être enregistrés dans un module.
-
Directive ng-app requise : La directive ng-app doit être présente sur l'élément racine pour démarrer l'application Angularjs.
Solution :
-
Créez un module Angularjs : Utilisez angulaire.module() pour définir un module nommé 'app'.
-
Enregistrer le contrôleur dans le module : Appelez .controller() sur le module pour définir un contrôleur nommé « Ctrl » avec les dépendances appropriées et la fonction de contrôleur.
-
Ajoutez ng-app à l'élément racine : Assurez-vous que l'élément HTML racine possède l'attribut ng-app.
Remarques supplémentaires :
- Il est recommandé d'utiliser la dernière version d'Angularjs (1.6 ou supérieure) pour des raisons de stabilité et de sécurité.
- Si vous devez prendre en charge les déclarations globales du contrôleur, vous pouvez utiliser angulaire.config().allowGlobalScoping(). Cependant, ce n'est pas la meilleure pratique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!