在几个不同的浏览器选项卡中的Angular和TypeScript / javascript单例

吉兹摩斯

我的问题与我的Angular应用中进入浏览器一个选项卡的TypeScript单例类(用作对象的MVC模型类型)是否相同或不同,然后将同一个单例加载到同一浏览器实例的另一个选项卡中。

该实现看起来像这样(类似的想法可以用JS编写):

[TypeScript]
class Budget {
    readonly name : string;

    private static instance: Budget;
    static getInstance(name? : string) {
        if (!this.instance) {
            name = name ? name : "no name";
            this.instance = new Budget(name);
        }
        return this.instance;
    }
    private constructor(name : string) {
      this.name = name;
    }
 }

在我的应用程序中,顶级“预算”对象被编写为单例,以简化对各种数据项,类实例等的访问。预算对象由大约40个其他需要相互访问的组件类组成,并且预算对象为每个类实例提供了访问其所需其他实例的方式。单例体系结构允许我编写类似Budget.getInstance()。getAccount(“ foo”)的代码,而不是在所有这些子类中维护对Budget实例的引用。事实证明,这使我写起来容易得多。

我的问题是,使用这种体系结构,用户是否可以在浏览器的不同选项卡(例如Chrome)中打开两个不同的预算,这些选项卡引用具有不同名称的不同Budget对象实例。(单例实例由Rails后端填充数据,具体取决于用户要编辑的预算。)我可以想象用户在浏览器中同时引用两个不同的预算时,在哪个位置有用,每个地方在另一个标签中。但是,如果在所有浏览器选项卡中实际上只有一个Budget对象可访问,则这是不可能的。

葛瑞克

如果使用键从第一个选项卡中打开了第二个选项卡,则可以在选项卡之间共享JavaScript对象window.open()此函数返回window打开的选项卡对象。

尽管没有内置的Angular方法可以执行此操作,但是您可以使用本机JavaScript自己尝试:

  • 打开浏览器的控制台,然后键入 const secondTab = window.open('', '_blank');
  • 在第一个选项卡上创建一个对象: const obj = {};
  • 将其分配给第二个选项卡 secondTab.obj = obj;
  • 在第二个标签中,键入 obj.prop = 'test';
  • 在第一个标签中,键入obj,您会注意到它已被第二个标签修改

如果您的问题是关于独立打开的选项卡,恐怕这是不可能的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript文字对象和单例模式

来自分类Dev

javascript中单例的正确实现

来自分类Dev

JavaScript:监听浏览器选项卡的更改

来自分类Dev

从JavaScript中的字符串获取导出的单例实例

来自分类Dev

如何在Javascript中创建单例类?

来自分类Dev

枚举和单例

来自分类Dev

使用javascript在IE浏览器的新选项卡中打开URL的最佳方法是什么?

来自分类Dev

如何使用JavaScript关闭浏览器选项卡(父窗口)

来自分类Dev

Javascript在浏览器/选项卡上显示设计的元素

来自分类Dev

如何知道浏览器选项卡是否已使用Javascript打开?

来自分类Dev

HTML / Javascript-导航至已打开的浏览器选项卡/窗口

来自分类Dev

Javascript在浏览器/选项卡上显示设计的元素关闭

来自分类Dev

HTML / Javascript-导航至已打开的浏览器选项卡/窗口

来自分类Dev

Autofac单例和非单例一起

来自分类Dev

单例对象和子类

来自分类Dev

密封类和单例

来自分类Dev

Powershell单例和$ this行为

来自分类Dev

单例对象和子类

来自分类Dev

Autofac解析单例对象中的非单例对象

来自分类Dev

Autofac解析单例对象中的非单例对象

来自分类Dev

异构列表中的单例

来自分类Dev

PHP中的单例对象

来自分类Dev

Coffeescript中的单例课程

来自分类Dev

在Java中同步单例

来自分类Dev

PHP中的单例对象

来自分类Dev

依赖注入中的单例

来自分类Dev

Dagger 中的单例方法

来自分类Dev

如何在打字稿声明文件中定义单例javascript类

来自分类Dev

Javascript单例继承