web-dev-qa-db-fra.com

Module multiple dans Angularjs

Est-il possible de créer plusieurs modules dans un script Angular?)? J'ai parcouru la documentation et appris qu'il s'agissait d'une sorte de concept de méthode principale.

J'ai besoin d'exemples pour le démontrer.

39
Habibur Rahman

Oui, vous pouvez définir plusieurs modules dans angularJS comme indiqué ci-dessous.

var myApp = angular.module('myApp', [])
var myApp2 = angular.module('myApp2', [])

Cependant, n'oubliez pas de définir la dépendance lors de chaque déclaration de module comme ci-dessous. Supposons que myApp2 dépend de myApp. Par conséquent, la déclaration serait quelque chose de similaire à,

var myApp = angular.module('myApp', [])
var myApp2 = angular.module('myApp2', ['myApp'])

La modularisation dans AngularJS nous aide à garder la clarté du code et à la rendre facile à comprendre, car nous pouvons combiner plusieurs modules pour générer l’application. Cependant, nous devons garder à l'esprit que nous devons modulariser les composants en fonction de leurs fonctionnalités et non de leurs types.

42
Aviro

Une seule application AngularJS peut être démarrée automatiquement par document HTML. Le premier ngApp trouvé dans le document sera utilisé pour définir l'élément racine à initialiser automatiquement en tant qu'application. Pour exécuter plusieurs applications dans un document HTML, vous devez manuellement bootstrap avec angular.bootstrap. Les applications AngularJS ne peuvent pas être imbriquées les unes dans les autres. - http: //docs.angularjs .org/api/ng.directive: ngApp Voir aussi

https://groups.google.com/d/msg/angular/lhbrIG5aBX4/4hYnzq2eGZwJhttp://docs.angularjs.org/api/angular.bootstrap

vous pouvez également utiliser un seul ng-app mais combiner 2 modules de la manière suivante:

var moduleA = angular.module("MyModuleA", []);
moduleA.controller("MyControllerA", function($scope) {
  $scope.name = "Bob A";
});

var moduleB = angular.module("MyModuleB", []);
moduleB.controller("MyControllerB", function($scope) {
  $scope.name = "Steve B";
});

angular.module("CombineModule", ["MyModuleA", "MyModuleB"]);

et alors ng-app="CombineModule"

28
Mohamed NAOUALI

Je pense qu'il a confondu module avec ngApp, en ce sens qu'il n'y a qu'une seule application (ng-app) sur une page et que la vue de l'application (ngView ou <ng-view>) ne peut exister qu'une seule fois. Mais comme indiqué dans les réponses précédentes, vous pouvez créer autant de modules que vous le souhaitez et les injecter en tant que dépendances dans votre module d'application "principal". Je fais généralement cela pour séparer mes directives, filtres, contrôleurs et autres dans leurs propres modules.

Modifier:

ngApp - http://code.angularjs.org/1.1.5/docs/api/ng.directive:ngApp

13
m.e.conroy

Bien sûr vous pouvez. Utilisez simplement angular.module('moduleName', [/* dependencies */]) autant de fois que de # de vos modules que vous souhaitez créer.

Pour obtenir une référence à un module défini précédemment, faites simplement: var myModule = angular.module('moduleName');, puis myModule.controller(...), myModule.config(), myModule.constant() etc.

Une structure de projet suggérée (voir Angular Seed) contient un module pour votre application, puis un autre pour vos contrôleurs, un autre pour vos services, un autre pour vos filtres et encore un autre pour vos directives. est ne simple suggestion . D'autres suggèrent autres dispositions .

12
Thalis K.

que voulez-vous dire plusieurs modules? vous pouvez injecter le module dans un autre module

angular.module(name[ anotherModule]);
1
LauroSkr