【发布时间】:2017-05-19 01:04:59
【问题描述】:
我设计了一个应用程序,使用 mithriljs(0.2.5) 和组件和 Observer 模式进行组件间通信。但是,我确实需要阻止基于另一个组件的操作。
说,我有 2 个组件 ItemList 和 ItemDetail。当在列表组件中选择一个项目时,会触发一个 ITEM_SELECTED 事件,该事件会导致加载详细信息。详细信息组件允许编辑和保存用户详细信息。
如果详细信息很脏(编辑未保存)并且用户尝试进行选择,我想显示一个带有是/否/取消选项的保存项目屏幕。根据选择的选项,加载新的详细信息或取消并返回之前的选择。
Selection 组件不知道细节的脏度,Detail 组件会渲染保存确认。
如果选择取消,Detail 组件的一个选项会触发 REVERT_SELECTION 消息,理想的模式是阻止 Item 选择完成,直到 Detail 组件给出 go/no go 响应,似乎我需要观察者以外的其他东西,即阻塞。
谢谢
【问题讨论】:
-
出于好奇,您是否考虑过迁移到 Mithril 1.x?目前它已经发布了大约 5 个月,因此您可能需要尽快考虑。
-
@Isiah Meadows,简而言之,我们在 2014 年中期开始使用 Mithril 0.1x 的项目,它相当复杂且庞大。 Mitriljs 非常棒(谢谢!),尤其是 dom 管理/渲染性能。我们使用了很多 Mithriljs 0.x 模式,并具有 m.prop、m.sync 等特色。 m.start/endComputation(项目基于 websockets)。我们确实有 3 个方库(jQuery、jQueryUI、Gridstack、C3js..),因此大量使用了 vdom.config。看看 1.0 api,迁移不会是直截了当的,这将是一个重要的重构,以获得 v1.x 的全部好处。这阻碍了我们
标签: javascript observer-pattern blocking mithril.js