Comment définir des contrôleurs en plusieurs fichiers - AngularJs
Je suis en train de définir les contrôleurs dans des fichiers séparés, mais j'obtiens le message d'erreur:
transactionsController not a function got undefined
Structure du fichier
J'ai ajouté les fichiers dans cette séquence
1 - common.js
2 - transactions.js
Common.js
Dans la commune de fichiers que j'ai défini
var app = angular.module("spModule", ["ngMessages", "ui.bootstrap"]);
Transactions.js
angular.module('spModule').controller('transactionsController',
['$scope', '$http', function ($scope, $http) {} ]
);
Fichier HTML
<body ng-app="spModule" ng-controller="transactionsController">
- Cela devrait fonctionner correctement. Êtes-vous sûr que vous êtes en train de charger les fichiers dans le bon ordre? L'erreur semble étrange? Est-ce vraiment l'erreur que tu as?
- avez-vous d'inclure le Transactions.js fichier dans le document HTML?
- j'ai remarqué les erreurs angulaires de revenir un peu étrange. Cela semble certainement être un script include/commande de problème, publier la totalité du HTML. Il n'y a aucun point dans la spécification d'un
app
variable si vous ne l'utilisez pas dans ce fichier. - essayez $compiler, ou plunker
- n'obtenant aucune erreur concernant le fichier comprend ,
- pas de son fichier php somelike header.php
- Je vous suggère fortement de poster plus d'informations à votre question, il est impossible de vous donner une réponse à ce point. Sinon, cette question devra être signalé
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devriez vous débarrasser de la global
app
variable. Ce n'est pas nécessaire. Deuxièmement, vous devez comprendre le principe de laangular.module()
méthode.À l'aide de
angular.module()
avec deux paramètres (par exemple laangular.module('my-module', [])
) aurait pour conséquence réglage un nouveau module avec dépendances. En revanche, lors de l'utilisation deangular.module('my-module')
le module correspondant est regardé en interne et retournée à l'appelant (arriver).Les moyens lorsque vous définissez tout d'abord vous demande de vous peut juste créer les fichiers suivants et de la structure.
app.js
FirstController.js
SecondController.js
Maintenant, si vous incluez ces fichiers dans votre document html dans ce particulièrement ordre (au moins app.js doit venir en premier), votre application fonctionne très bien avec les deux contrôleurs dans deux fichiers distincts.
Lectures supplémentaires
Je peux vous recommander le AngularJS Styleguide sur les modules pour obtenir plus d'idées sur ce sujet.
Vous Pouvez mettre ce contrôleur dans seprate fichier comme mycontroller1.js
Même comme cela, vous pouvez créer un nouveau fichier js 'myNewcontroller.js" et peut mettre un nouveau contrôleur :
Espérons que cela vous aidera 🙂 Cheers !!
Vous pouvez faire ce genre de choses par la création de modules. Création du module et de leurs contrôleurs. Et injecter que le module de l'application principale du module.
Maintenant injecter le "tmodule" à votre Common.js fichier-
Charger votre common.js d'abord. Déplacer ng-app directive
<html>
tag. Changement transaction.js pour:Juste pour le plaisir. Laissez-moi savoir ce qui se passe.