gpt4 book ai didi

GWT MVP - 维护多个相互独立的显示器

转载 作者:行者123 更新时间:2023-12-04 12:24:38 28 4
gpt4 key购买 nike

我有一个 GWT 应用程序,我正在将 GWT MVP 与地点/事件一起使用。

我的应用程序布局类似于

菜单 |内容

菜单和内容显示将动态变化,其中一个单独变化。我的意思是,当内容显示更改时,我不想更新菜单显示,反之亦然。两个显示器都需要能够响应 PlaceChangeEvents 并在这些事件发生时更新自己。问题是每个显示应该只更新以响应某些 PlaceChangeEvents,而忽略指向另一个显示的 PlaceChangeEvents。然而,这在使用“标准”GWT MVP 模式时不起作用,因为即使每个显示器都有自己的 ActivityManager,它们也会自动获取所有 PlaceChangeEvents,因为有一个 PlaceController 监听单个 EventBus。我能看到的唯一方法是使用两个 EventBus 和两个 PlaceControllers——一个用于菜单,一个用于内容。所以我的问题是,这是否是一个好的解决方案,或者是否有我缺少的更简单/更好的方法?此解决方案的一个问题是 PlaceHistoryHandler 只能注册到 EventBus 之一。

最佳答案

地点变化实际上是由 ActivityMappers 控制的。他们得到一个地方并返回相应的事件。您可以在此处控制地点如何映射到事件:

  • 您需要创建两个 ActivityMapper(MenuActivityMapper、ContentActivityMapper),然后用它自己的 ActivityMapper 实例化两个 ActivityManager。然后为每个 ActivityManager 调用 setDisplay(AcceptsOneWidget display)对于每个你通过一个区域(显示)的地方,它将显示它的内容。
  • 对于菜单,您可能只会使用一个事件,因为它在所有地方都可用。所以MenuActivityMapper.getActivity()将始终返回 MenuActivity 的相同实例。要使 MenuActivity 仍然根据位置更改调整其外观,MenuActivity 应监听 PlaceChangeEvents。
  • 关于GWT MVP - 维护多个相互独立的显示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5879640/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com