javascript - 如何管理(打开、关闭、调整大小)多个窗口

标签 javascript angularjs

我正在使用 AngularJS 构建一个大型应用程序。用户登陆登录页面,登录后我打开一两个窗口。一旦打开,窗口将根据各种标准调整大小、关闭或生成更多子窗口。我的问题是管理这些!

我的 Angular 应用程序只能引用其直接父窗口或它生成的窗口,但不能引用全部窗口,因为范围仅限于其窗口。我尝试将窗口对象存储在 localStorage/cookies 中,但由于 JSON.stringify 中的循环引用,这不起作用。我对如何以编程方式构建而不对所有无法长期工作的内容进行硬编码感到有点困惑。

我显然已经尝试了以下方法,但它不起作用,因为我需要能够从任何窗口引用任何窗口。而且我似乎无法将 var x 存储在任何地方。

var x = window.open(...)
  1. 如何以编程方式存储和管理(关闭、打开、调整大小、重新定位)应用中的多个窗口。
  2. 如果不存在优雅的解决方案,我如何存储和检索窗口对象?

更新

好吧,看来我找到了解决这个问题的方法。我在 localStorage 中存储了一组窗口 ID。然后每当我需要搞乱我读到的内容时,调用 window.open(null, id).function()

由于 window.open 返回对已打开窗口的引用,因此似乎应该可以工作。仍然希望有任何其他意见...

最佳答案

不确定这个解决方案是否有帮助,但这就是我所做的。我创建了一个带有多个 div 的 Angular 应用程序,可以调整大小、关闭等,其中每个 div 都有自己的 Controller 。所以我使用 $rootScope 作为事件总线并将所有事件发布到它。

因此每个 Controller 都可以发布和订阅 $rootScope 上的事件。

Controller 1

$rootScope.$broadcast('Event', { 'key': value });

Controller 2

$rootScope.$on('Event', function(e, data){//process data});

您还可以创建一个服务来存储和共享窗口 ID,因为服务是单例的。

关于javascript - 如何管理(打开、关闭、调整大小)多个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616618/

相关文章:

javascript - Angular $q在http请求之前执行 "then"

angularjs - 如何绑定(bind)到元素高度并在窗口调整大小或使用 Angular 的其他事件时观察它?

javascript - 连续 GA 命中率下降

javascript - 如何从扩展中检测页面加载错误?

javascript - 在构造函数中创建只读(获取)属性

javascript - 在另一个 AngularJS 之后执行函数

javascript - 在 JavaScript 中动态添加新按钮

javascript - 从确切位置上传用户文件的脚本

javascript - 无法获取属性 'scopeName'

javascript - AngularJS : Getting data from Factory and update Controller scope and view