Vous pouvez utiliser angular.bootstrap()
directement ... le problème est que vous perdez les avantages des directives.
Vous devez d'abord obtenir une référence à l'élément HTML afin de l'amorcer, ce qui signifie que votre code est maintenant couplé à votre HTML.
Deuxièmement, l'association entre les deux n'est pas aussi évidente. Avec ngApp
vous pouvez voir clairement quel HTML est associé à quel module et vous savez où chercher ces informations. Mais angular.bootstrap()
peut être invoqué de n'importe où dans votre code.
Si vous voulez le faire, la meilleure façon serait d'utiliser une directive. C'est ce que j'ai fait. Ça s'appelle ngModule
. Voici à quoi ressemblerait votre code en l'utilisant:
<!DOCTYPE html>
<html>
<head>
<script src="angular.js"></script>
<script src="angular.ng-modules.js"></script>
<script>
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";
});
</script>
</head>
<body>
<div ng-modules="MyModuleA, MyModuleB">
<h1>Module A, B</h1>
<div ng-controller="MyControllerA">
{{name}}
</div>
<div ng-controller="MyControllerB">
{{name}}
</div>
</div>
<div ng-module="MyModuleB">
<h1>Just Module B</h1>
<div ng-controller="MyControllerB">
{{name}}
</div>
</div>
</body>
</html>
Vous pouvez obtenir le code source pour cela à:
http://www.simplygoodcode.com/2014/04/angularjs-getting-around-ngapp-limitations-with-ngmodule/
Il est mis en œuvre de la même manière que ngApp
. Il appelle simplement angular.bootstrap()
les coulisses.