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
Libérer: 2024-12-02 17:55:11
original
965 Les gens l'ont consulté

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
    }]);
Copier après la connexion

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);
Copier après la connexion

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();
    }]);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal