2

我的问题是关于Maquette Javascript 框架中组件之间的通信。

想象一下,我在一个Menu组件中使用了一个子Application组件:该Application实例想知道何时在Menu实例中选择了一个菜单项,以便交换应用程序中显示的主要内容(例如)。换句话说,我需要一种在子组件与其父组件之间进行通信的方法。如何在 Maquette 中实现这一点?

当然,我可以将应用程序实例拥有的回调传递给菜单实例,该实例将在选择项目时调用。但我有点不愿意这样做,因为“选择”事件只是菜单组件的“渲染端”方面,所以我希望该事件不要泄漏到我的MenuAPI 中,而是留在渲染函数中/方法代替。

所以,我想在“渲染端”处理事件。但我想这意味着我必须从 ' 的渲染函数中发送一个CustomEvent并在Menu' 的渲染函数中注册一个CustomEvent处理程序Application,对吗?模型是否支持此用例?CustomEvent我的用例还有其他选择吗?

谢谢!

PS:从票#71转贴在这里以获得更多答案。

4

1 回答 1

1

我们通常做的是将回调传递给当项目被点击时被调用的组件。例如,可以使用回调构造菜单menuItemClicked(menuItem: MenuItem)。恕我直言,这不会将任何特定于应用程序的知识泄漏到菜单/菜单项中。菜单的创建者可以在回调中执行任何操作,例如路由或更改变量。

事件系统当然也是可能的。我不建议使用 DOM 层次结构来冒泡事件。我可以想象使用然后调用或其他东西Application创建菜单。menu = createMenu(...)menu.addEventListener('itemClicked', navigate)

于 2016-09-20T09:28:34.533 回答