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

标签 javascript angularjs

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

我正在向子窗口传递一些数据,这些数据由一些属性和一个函数组成,

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

刷新任务是我的一个 Controller 中的一个方法

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

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()

关于javascript - 在新窗口中打开相同的 AngularJS 应用程序并在父窗口中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33369042/

相关文章:

javascript - 无法访问对象的属性 - 对象

javascript - 在 JavaScript 中编写相同深度回调的更好方法

javascript - 如何在主干stickit中绑定(bind)元素属性?

javascript - html:有什么方法可以将 "wrap"设为具有自动重新加载功能的网页吗?

javascript - 如何让ngForm知道它嵌套的表单已经提交

javascript - 当我使用 Angular md-selected 索引频繁切换选项卡时,多个 'md-tab' 同时具有 'md-active' 类

javascript - 为什么我在 http 之后在 angularjs 变量中得到空值

javascript - 如何更改 AngularJS 中二维数组的属性?

javascript - 使用 ng-repeat 创建 DOM 属性

javascript - ember.js 路由刷新后滚动到聊天框底部