如何在同一页面中运行两个单独的Angular js应用程序

Dan*_*iel 34 angularjs

Angular新手.我觉得我错过了一些明显的东西:我不应该能够轻松地在同一个html页面中运行分离AngularJs应用程序(模块)吗?像这样的东西:

  <section ng-app="HelloWorldApp" ng-controller="HelloWorldController">
    Hello {{name}}!
  </section> 
  <br />
  <section ng-app="MyNameIsApp" ng-controller="MyNameIsController">
    My Name is {{FirstName}} {{LastName}}!
  </section> 
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

var HelloWorldApp = angular.module('HelloWorldApp', []);
HelloWorldApp.controller('HelloWorldController', function($scope) {
  $scope.name = 'World';
});

var MyNameIsApp = angular.module('MyNameIsApp', []);
MyNameIsApp.controller('MyNameIsController', function($scope) {
  $scope.FirstName = 'John';
  $scope.LastName = 'Smith';
});
Run Code Online (Sandbox Code Playgroud)

这只运行第一个模块,而第二个模块似乎没有执行任何操作.我想这样做,这样我就可以为多个页面构建可重用的封装指令,而不必将它们的模块命名为同一个东西.

实例:http://plnkr.co/edit/cE6i3ouKz8SeQeA5h3VJ


我们最终建立了小型的模块层次结构,但是我的原始问题可以完成,只需要做一些工作(见下文).

The*_*ppo 49

这是可能的,但需要手工编写一点点编码.您需要自己引导角度应用程序.别担心,它并不复杂

  • 不要ng-app在HTML中添加属性
  • 确保您可以获取持有该应用程序的DOM元素
  • 加载DOM时,您需要自己启动应用程序: angular.bootstrap( domElement, ['AppName']);

你的叉子有效吗:http://plnkr.co/edit/c5zWOMoah2jHYhR5Cktp


mfe*_*lix 7

根据ngApp 的Angular 文档:

使用此伪指令自动引导应用程序.每个HTML文档只能使用一个指令.该指令指定应用程序的根目录,通常放在页面的根目录下.

似乎是设计的.


小智 5

您可以在主模块的模块def中指定任何嵌套的应用程序.

angular.module("myapp", ['statusapp', 'tickerapp']).controller(....
Run Code Online (Sandbox Code Playgroud)

在单独的文件中,您已定义其他应用程序.我们正在使用模板引擎隐藏其中的一部分,但您最终会得到HTML,其中包含嵌套的ng-apps和javascript,用于定义模块/控制器的每一个.上面的代码是获得多个bootstrap的技巧.