Maquette中组件之间的通信

时间:2016-09-20 09:07:46

标签: javascript events components communication maquette

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

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

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

所以,我想处理“渲染方”的事件。但我想这意味着我必须从CustomEvent的渲染函数发送Menu并在CustomEvent的渲染函数中注册Application处理程序,对吧?这个用例是否支持maquette?对于我的用例,还有CustomEvent的其他替代方法吗?

谢谢!

PS:问题从故障#71重新发布,以获得更多答案。

1 个答案:

答案 0 :(得分:1)

我们通常做的是将回调传递给在单击项目时调用的组件。例如,可以使用回调namespace构建菜单。 Imho这不会将任何特定于应用程序的知识泄漏到菜单/ menuitem中。菜单的创建者可以在回调中执行任何操作,例如路由或更改变量。

事件系统当然也是可能的。我建议不要使用DOM层次结构来冒泡。我可以想象 XNamespace ns = "http://www.manas.info/"; var xdoc = XDocument.Load(@"c:\temp\a\a.xml"); var verze = xdoc.Root.Elements(ns + "qr00") .Elements(ns + "verzemanas") .Select(e => e.Value); verze.ToList().ForEach(v => Console.WriteLine(v)); 使用26052708 26052710 创建菜单,然后调用menuItemClicked(menuItem: MenuItem)或其他内容。