我很困惑。如果ng-app每页只能使用一次,则如何使用位于不同模块,不同.js文件中的指令。看:
ng-app
<script src='mainModule.js'/> <script src='secondModule.js'/> <body ng-app='mainModule'> <my-thingy/> <div> <other-thingy/> </div> </body> mainModule.js: angular.module("mainModule",[]).directive("myThingy",function(){ ... }) secondModule.js: angular.module("secondModule",[]).directive("otherThingy",function(){ ... })
因此,我现在如何指向页面上的secondModule,而无需从mainModule.js引用它
有一种解决方案,可以以编程方式在页面上引导几个角度模块(docs)。
您必须ng-app从html中删除属性。
定义几个模块:
var app1 = angular.module('myApp1', []); var app2 = angular.module('myApp2', []); app1.controller('MainCtrl', function($scope) { $scope.name = 'App1'; }); app2.controller('MainCtrl', function ($scope) { $scope.name = 'App2'; })
然后在index.html中执行:
<html> <head></head> <body> <!-- Module 1 --> <div id="myApp1"> <div ng-controller="MainCtrl"> <h1>Hello {{name}}</h1> </div> </div> <!-- Module 2 --> <div id="myApp2"> <div ng-controller="MainCtrl"> <h1>Hello {{name}}</h1> </div> </div> <!-- Bootstrap modules --> <script> angular.element(document).ready(function() { angular.bootstrap(document.getElementById('myApp1'), ['myApp1']); angular.bootstrap(document.getElementById('myApp2'), ['myApp2']); }); </script> </body> </html>
这是使用此解决方案的有效plnkr。