我正在使用AngularJS构建一个大型应用程序。用户登陆登录页面,登录后我打开一个或两个窗口。一旦打开,基于各种标准,窗口将调整大小,关闭或产生更多的孩子。我的问题是管理这些!
我的Angular应用程序只能引用其直接父窗口或它已生成的窗口,但不是全部,因为范围仅限于其窗口。我已经尝试将窗口对象存储在localStorage / cookies中,但由于JSON.stringify中的循环引用而无法工作。关于如何以编程方式进行结构而不对所有不能长期工作的内容进行硬编码,我在这方面有点不知所措。
我已经尝试了下面的内容,但它不会起作用,因为我需要能够从任何窗口引用任何窗口。而我似乎无法将var x存储在任何地方。
var x = window.open(...)
更新
好吧,我觉得我找到了解决这个问题的方法。我在localStorage中存储了一组窗口ID。然后,每当我需要弄乱我读取它时,请调用window.open(null,id).function()
由于window.open返回对已经打开的窗口的引用,因此它似乎应该可以工作。仍然会喜欢任何其他意见......
答案 0 :(得分:1)
不确定此解决方案是否有帮助,但这就是我所做的。我创建了一个带有多个div的角度应用程序,可以调整大小,关闭等等,其中每个div都有自己的控制器。所以我使用$ rootScope作为事件总线并将所有事件发布到它。
因此,每个控制器都可以在$ rootScope上发布和订阅事件。
控制器1
$rootScope.$broadcast('Event', { 'key': value });
控制器2
$rootScope.$on('Event', function(e, data){//process data});
您还可以创建一个服务来存储和共享窗口ID,因为服务是单例。