Maison >interface Web >js tutoriel >Pourquoi mon contrôleur AngularJS n'est-il pas une fonction et comment puis-je y remédier ?

Pourquoi mon contrôleur AngularJS n'est-il pas une fonction et comment puis-je y remédier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-02 17:55:11953parcourir

Why is my AngularJS Controller Not a Function, and How Can I Fix It?

Le contrôleur n'est pas une erreur de fonction dans AngularJS : guide complet pour résoudre le problème

Lorsque vous travaillez avec AngularJS, vous pouvez rencontrer une erreur indiquant que un contrôleur n'est pas une fonction. Cette erreur se produit généralement lors de la tentative de définition globale des contrôleurs, ce qui n'est plus autorisé dans AngularJS 1.3. Pour résoudre ce problème, vous devez enregistrer les contrôleurs explicitement en utilisant la syntaxe module.controller.

Solution 1 : Enregistrer les contrôleurs à l'aide de la syntaxe module.controller

Pour définir un contrôleur en utilisant la syntaxe module.controller, suivez ces étapes :

angular.module('app', [])
    .controller('ContactController', ['$scope', function ContactController($scope) {
        // Controller logic here
    }]);

Solution 2 : Utiliser l'annotation $inject et AngularJS 1.3.5

Pour les versions AngularJS 1.3.5 et ultérieures, vous pouvez utiliser l'annotation $inject pour définir les dépendances de votre contrôleur. Cette annotation doit être placée en haut de la fonction de votre contrôleur.

function ContactController($scope) {
    $scope.contacts = ["[email protected]", "[email protected]"];

    $scope.add = function() {
        $scope.contacts.push($scope.newcontact);
        $scope.newcontact = "";
    };
}
ContactController.$inject = ['$scope'];
angular.module('app', []).controller('ContactController', ContactController);

Réactiver les contrôleurs globaux (facultatif)

AngularJS 1.3 applique une portée stricte, ce qui interdit déclaration globale du contrôleur. Cependant, vous pouvez réactiver les contrôleurs globaux en utilisant l'option allowGlobals dans la configuration de votre module :

angular.module('app')
    .config(['$controllerProvider', function($controllerProvider) {
        $controllerProvider.allowGlobals();
    }]);

Considérations supplémentaires :

  • Assurez-vous que ng- app est défini sur l'élément racine de votre fichier HTML.
  • Vérifiez que les scripts corrects sont inclus dans votre HTML.
  • Évitez de définir le même module plusieurs fois, car cela peut effacer les entités précédemment enregistrées.

En suivant ces solutions, vous réussirez à résoudre l'erreur « Le contrôleur n'est pas une fonction » dans AngularJS et définissez efficacement les contrôleurs.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn