这是后续问题Is publishing/subscribing to events after UI rendering a best practice regardless of framework?,上个月我们问过,因为我们第一次使用Javascript/ExtJS应用程序访问了pub/sub路径。 如果您想从纯粹的发布 - 订阅角度来看待我的问题,请参阅倒数第二段的第一句,强调的句子。首先有点上下文:有条件订阅/取消订阅多个邮件
我们有一个面板,其中包含一个卡片持有一个网格面板的tab面板,和一个面板,其中包含一个窗体过滤网格数据。在beforechangetab事件中,我们添加/删除共享网格,并发布GRID_TAB_TOGGLED消息以及指示有货或无货的标志,然后网格用适当的数据重新加载。
至于过滤器,我继承了代码依赖于只是一种形式,和组合框的选择基础上,加载库存/非库存数据修改,但现在我们必须保持滤波器状态的所有 。我最初的想法是使用卡布局来保存库存或非库存的过滤器,并在响应相同的GRID_TAB_TOGGLED消息时在这些过滤器之间进行切换。
问题在于,这两个过滤器表单都需要监听其他众多相同的事件。我想我已经确定了一个解决方案,并且正在寻求设计验证。
我的想法是让不同的表单能够确定他们是否是“活跃”(库存或非库存)过滤器,并且如果活动,则订阅所有必要的消息,但如果不活跃,则取消订阅商场。只要接收到GRID_TAB_TOGGLE消息,就会发生这种取消订阅,然后重新订阅。
从ExtJS的角度来看,这看起来像是一个合理的设计,但对我更感兴趣(因为我有近3年的ExtJS经验,但实施我自己的基于pub/sub的系统只有1.5个月) /订阅范式的立场?也许这对于基于pub/sub的系统甚至是一种模式(或者,尽管我希望不是,反模式)?