在新窗口中打开相同的AngularJS应用程序并在父窗口中调用函数

时间:2015-10-27 13:15:35

标签: javascript angularjs

我一直致力于角度应用。我有一个要求,当我向用户显示可用任务列表并单击特定任务时,打开一个具有相同AngularJS应用程序代码库的新窗口,这将允许用户对任务进行更改。新窗口中的应用程序将是独立的,用户可以执行某些操作。一旦用户关闭窗口,我需要在父应用程序(父窗口)中刷新任务列表。

我将一些数据传递给子窗口,数据由一些属性和一个函数组成,

var appData = {
                action: "edit",
                id: taskId,
                refreshTasks: refreshTasks
            };

刷新任务是我控制器中的一种方法

我将以下列方式将数据传递给子窗口,

var windowHandle = $window.open("http://www.example.com"); 
if(angular.isDefined(windowHandle)) {
     windowHandle.appData = (dataObj == null ? {} : dataObj);
     windowHandle.appData.isChildWindow = true;
}

现在我们使用

访问子窗口中传递的数据
$window.appData

现在当子窗口关闭时,我按以下方式调用我传递的函数,

$window.appData.refreshTasks()

上述内容似乎适用于Chrome和Mozilla,但它不适用于IE(8,9,10,11)

所以我真的想知道如何在一个窗口中将一个角度应用程序调用到另一个窗口中的另一个角度应用程序。

请您告诉我这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用appData

访问window.opener
window.opener.appData
window.opener.appData.refreshTasks()