Вы можете использовать angular.bootstrap()
напрямую ... проблема в том, что вы теряете преимущества директив.
Сначала вам нужно получить ссылку на элемент HTML для его начальной загрузки, что означает, что ваш код теперь связан с вашим HTML.
Во-вторых, связь между ними не так очевидна. С ngApp
его помощью вы можете четко видеть, с каким HTML связан модуль, и знаете, где искать эту информацию. Но angular.bootstrap()
может быть вызван из любого места в вашем коде.
Если вы собираетесь это сделать, то лучше всего использовать директиву. Что я и сделал. Это называется ngModule
. Вот как будет выглядеть ваш код при его использовании:
<!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>
Вы можете получить исходный код для этого на:
http://www.simplygoodcode.com/2014/04/angularjs-getting-around-ngapp-limitations-with-ngmodule/
Это реализовано так же, как и ngApp
. Это просто вызывает angular.bootstrap()
за кулисами.