AngularJS:打开一个新的浏览器窗口,但仍然保留范围和控制器以及服务

2024-01-20

我正在编写一个 angularJS 应用程序。在这个特定的控制器中,我通过以下方式打开一个新的浏览器窗口$window.open服务。但在新窗口中,所有$scope变量丢失。

我尝试使用window.parent但这行不通。事实上,在新的浏览器窗口中,所有应用程序服务、控制器或范围根本不起作用,这是真的吗?有没有办法打开一个新的浏览器窗口,但仍然使新窗口属于旧窗口中的同一个角度应用程序?我需要访问一些 angularJS 服务以及打开该新窗口的控制器的范围。这有可能吗?


没有[直接]方法使新窗口属于同一个 angular.js 应用程序,因为 Angular 应用程序通常与通过 ng-app 指令初始化的窗口的文档、窗口和事件相关联或者通过调用 angular.bootstrap。

但是,您可以为弹出窗口创建新的角度模块和应用程序。您可以通过包含适当的 javascript 文件来使用原始应用程序中相同的基本服务和控制器。

假设您的弹出窗口需要来自原始应用程序的数据,您可以使用从 window.open() 方法返回的窗口对象来传递该数据。例如,在您的第一个角度应用程序中,打开弹出窗口,如下所示:

angular.module('originalModule').service('popupService', function(someOtherDataService) {

  var popupWindow = window.open('popupWindow.html');
  popupWindow.mySharedData = someOtherDataService.importantData;

});

一旦您的辅助“弹出”角度应用程序初始化,它就可以通过读取 window.mySharedData 来引用共享数据。

您还可以在每个窗口中创建可以从其他窗口调用的函数。弹出窗口可以使用 window.opener 属性回调到原始窗口。 (window.parent指frames的父窗口,你要window.opener)

[同意,我确信如果您研究了 Angular 源代码,您可以找到一些巧妙的方法来为两个窗口使用相同的 Angular 应用程序。这样的尝试超出了我今晚的野心。]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS:打开一个新的浏览器窗口,但仍然保留范围和控制器以及服务 的相关文章

随机推荐

  • 如何全局或单点管理 axios 错误

    我的应用程序中遍布标准的 then catch axios 代码 一个简单的代码如下所示 axios get then r gt catch e gt 我遇到的问题是我必须复制catch 块来处理我在应用程序中调用的任何潜在错误 我的问题是
  • 使用 SQL 查询填充 nHibernate 映射文件中的属性

    我有一个对象 其中包含一个 SQL 语句结果的属性 如何将 SQL 语句添加到我的 nHibernate 映射文件中 示例对象 public class Library public int BookCount get set 示例映射文件
  • pygame 中 screen.blit(player, (xpos, ypos)) 和 display.flip() 有什么区别?

    两者似乎都会更新整个屏幕或仅更新屏幕的一部分 但哪一个做什么以及如何做 blit 不更新屏幕 它在缓冲区中绘制图像 update and flip 将缓冲区发送到视频卡 视频卡将其显示在监视器上 如果你有代码blit 但没有update o
  • Vue JS 中的图像路径[重复]

    这个问题在这里已经有答案了 我在 vue js 中有这样的结构文件 资产 图像 我的图像 png my image2 png 成分 用户 userStart vue 我将使用数组中的对象显示图像 这是我的代码 userStart vue i
  • 在 Mac OS X 10.6 上使用 Google App Engine SDK 和 Python 2.7

    我需要在安装了 Python 2 6 的 Mac Snow Leopard 上运行 Python 2 7 根据这个答案 https stackoverflow com questions 4460367 install python 2 7
  • 无法从 Mac 上的主机使用 NodePort 访问 minikube 服务

    我正在尝试将单个 Web 应用程序部署到 Mac 上的 Minikube 然后在浏览器中访问它 我正在尝试使用最简单的设置 但它不起作用 我只是收到 连接被拒绝 错误 但我不明白为什么 这就是我正在尝试的 minikube start in
  • Singleton 类出了问题,不知道是什么

    我以前从未做过任何单例类 现在我认为对于这个数据库连接来说 创建一个单例类是个好主意 但我不知道为什么它不起作用 如果有人能帮助我解决这个问题 我真的很感激 因为我想了解 OOP 是如何工作的 无论如何 我现在只需将 PHP 更新到最新版本
  • Spring data MongoDB 将数组添加到现有文档

    假设我有以下集合 public Data class Customer Id private String id private String firstName private String lastName DBRef private
  • 升级到 Crashlytics NDK 2.+ 后出现虚假 NDK 堆栈回溯

    从 Crashlytics 2 6 8 Crashlytics NDK 1 1 5 迁移到 Crashlytics 2 8 0 Crashlytics NDK 2 0 0 以及之后的任何更新版本后 寻找 NDK 堆栈跟踪中展开问题的结构支持
  • Firestore 管理员 创建匿名用户

    尝试使用管理员创建匿名用户 我使用云功能 但我不知道是否可能 admin auth createUser email userEmail emailVerified false password userPassword disabled
  • 如何在xcode中使用数组传递本地html文件

    我在这里尝试申请 当我单击表格视图时 它将重定向到另一个名为 详细信息 的页面 在那里我使用了 webview 来显示所选的 url 值 这是我的代码 void viewWillAppear BOOL animated super view
  • 选择内核和超参数以减少内核 PCA

    我正在阅读使用 Scikit Learn 和 TensorFlow 进行机器学习实践 构建智能系统的概念 工具和技术 https rads stackoverflow com amzn click com 1491962291 我正在尝试优
  • 使用 Java 下载文件

    我编写了一些代码来下载我所做的网络广播的一集 它获取剧集的 URL 并获取保存它的位置 不过 它最多只能下载 16MB 然后就会自动取消 我不完全确定要改变什么值来增加这个值 有可能吗 有人可以指出我正确的方向吗 谢谢你 下载代码 URL
  • Amazon SQS Java SDK - 无法接收消息属性

    在发送之前使用以下代码将带有属性的消息发布到 SQS 后 并在 SQS 控制台中检查所有内容是否正确发布 messageRequest addMessageAttributesEntry attributeTest new MessageA
  • Instabot:是否可以在单个帖子中上传多张图片?

    我正在使用此代码为 Instagram 创建一个简单的每日帖子机器人 一切都很顺利 但如果我能在每篇文章中发布包含 2 3 张图像的相册 那就太不可思议了 这可能吗 这是我到目前为止所做的 非常适合单图像帖子 import os impor
  • 尝试使用多处理来填充Python中的数组

    我有这样的代码 x 3 y 3 z 10 ar np zeros x y z from multiprocessing import Process Pool para process def local func section prin
  • Redis Lettuce 连接和 BLPOP

    Lettuce 在底层使用单个共享本机连接 在这种设计中使用 BLPOP 阻止命令是否安全 它会阻止此共享本机连接并影响其他客户端吗 我在 Lettuce 文档中没有找到具体的解释说明 提前致谢 使用 BLPOP BLMOVE 和类似命令会
  • 参数化ggplot2直方图/密度aes函数找不到对象

    我创建了一个直方图 密度图函数 我希望 y 轴为count而不是密度 但在参数化其 binwidth 时遇到问题 我正在使用基于的示例http docs ggplot2 org current geom histogram html htt
  • 如何将“com.unity3d.player.UnityPlayer”导入我的 Android 库?

    我在获取时遇到问题UnityPlayer依赖于我的 Unity Android 库插件 我只是无法找出向我的插件添加依赖项的正确方法 在我尝试添加之前classes jar文件到我的libs包含所有 UnityPlayer 代码的目录 这让
  • AngularJS:打开一个新的浏览器窗口,但仍然保留范围和控制器以及服务

    我正在编写一个 angularJS 应用程序 在这个特定的控制器中 我通过以下方式打开一个新的浏览器窗口 window open服务 但在新窗口中 所有 scope变量丢失 我尝试使用window parent但这行不通 事实上 在新的浏览