javascript - 使用angularJS手动引导时如何共享$rootScope?

标签 javascript angularjs angularjs-directive angularjs-scope

我正在创建一个有两个应用程序或 Divs 的应用程序。一个是使用 ng-app 指令引导的,而另一个是我使用 angular.bootstrap 方法手动引导的。

问题是这两个 div 都使用了一个 session 服务,该服务 $broadcasts 到 $rootScope,但是正如你所看到的,当你$rootScope 不在应用程序之间共享。

所以 appB 中的 $rootScope.$broadcast 没有被 appA 捕获。

这是一个演示:

angular.module('ngApp', [])
  .controller('ngAppController', function($scope, $rootScope) {
    $scope.msg = "Waiting for message..";
    $scope.$on('YO', function() {
      $scope.msg = 'Message recd';
    });

    //$rootScope.$broadcast('YO');
  });


var bElement = document.querySelector('#appB');
angular.module('appB', [])
  .run(function($rootScope) {
    $rootScope.msg = "Hello from app 'b'";
    $rootScope.$broadcast('YO');
  });
angular.bootstrap(bElement, ['appB']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="ngApp" ng-controller="ngAppController">
  <div>{{msg}}</div>
</div>
<div id="appB">
  <div>{{msg}}</div>
</div>

我怎样才能让 appB 接收到 appA 的广播?

最佳答案

我很确定 Angular 应用程序不应该知道页面上的其他 Angular 应用程序,因此对于这种不寻常的情况,我建议构建一个对两者都可见的“胶水”应用程序,例如window.superAngularScope = {...}。您可以在此对象中创建您需要的任何 api。但是,除非您有充分的理由违反两个 Angular 应用程序之间的封装,否则我建议您寻找不同的解决方案。

关于javascript - 使用angularJS手动引导时如何共享$rootScope?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30239183/

相关文章:

javascript - 如何打开 ICEFaces Javascript 日志窗口?

javascript - 在 onClick 函数中添加字符串参数?

javascript - NodeJS 发布请求 - 参数中的数字返回 NaN

javascript - 谷歌地图 API v3 : Initial View is Fine but Gray Box with No Map if View is changed

javascript - 使用 Angular ui-router 基于状态参数的负载 Controller

javascript - 初始化 Angular Directive(指令)中的文本输入字段

javascript - Angular 动态绑定(bind)指令范围

javascript - 为什么我的 setInterval 函数第二次不起作用? (JavaScript)

javascript - AngularJS : Fetch records for pagination from Firebase

angularjs - 在 Angular 中两次声明同一个指令的目的是什么?