在新窗口中打开同一个AngularJS应用程序,在父窗口中调用函数

Open Same AngularJS application in new window and call function in parent window

本文关键字:窗口 调用 函数 同一个 AngularJS 应用程序 在新窗口中打开      更新时间:2023-09-26

我一直在做一个angular应用。当我向用户显示可用任务列表并单击特定任务时,我有一个要求,使用相同的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)

所以我真的很想知道如何从一个窗口中的一个angular应用程序调用函数到另一个窗口中的另一个angular应用程序。

你能告诉我正确的方法是什么吗?

您可以使用window.opener:

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