【问题标题】:boilerplate js sharing data between modules样板 js 在模块之间共享数据
【发布时间】:2013-01-30 03:57:53
【问题描述】:

我需要一种在模块之间共享信息的方法——不仅是在同一模块中的组件之间——。 我有共同的数据要在不同的 moduleContext 之间共享。

-我尝试使用应用程序上下文(moduleContext.getParentContext().setSettings() 或 getSettings(),但每个模块上下文都有不同的 moduleContext.getParentContext()。

-我也尝试为应用程序创建一个单例对象,但即使在这种情况下,第一个模块(登录页面)的单例数据也不适用于其他模块。

-我尝试的第三件事是通过通知(通知/侦听)传递数据,结果相同。

有谁知道如何解决这个问题?

马科斯

【问题讨论】:

    标签: boilerplatejs


    【解决方案1】:

    如果你想保持模块树之间的关系,你需要通过调用来创建你的模块层次结构:

    parentContext.loadChildContexts(moduleContexts);

    完成后,该方法确保子上下文的“事件中介”设置为与父上下文完全相同的“中介”实例。然后任何一个模块发生的事件都会被通知给同一模块树中的所有上下文。

    设置也是一样。当使用“loadChildContexts”方法时,父上下文的设置被“复制”到子上下文设置。

    如果它仍然不适合你,你能把你的代码分享给我吗?我可以帮你找出问题所在。

    【讨论】:

    • 您好 Hasith,感谢您的帮助。事实上,问题不完全在于模块之间,而是在 domController 中加载的“模块”(如菜单、语言等)和模块中加载的组件之间。我在 DomController 中放置了一个“用户”组件。当用户登录时,我必须与模块共享用户信息。我必须以这种方式工作,因为部分站点是打开的,无需登录。
    • 另外,用户组件必须在登录后显示用户名,所以我必须能够在DomController中的组件和UrlController中的组件之间进行通信
    • 登录是一个使用 SPA 模型处理的棘手用例。这就是为什么您会发现几乎所有 SPA 应用程序都使用页面刷新来处理登录。尽管您可以让它与 BPJS 事件一起使用,但您是否可以在登录后立即刷新页面,以便所有组件都可以重新加载自己,从而允许它们从服务器会话中检索新的登录状态?
    猜你喜欢
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2016-03-17
    • 2016-04-20
    相关资源
    最近更新 更多