我的问题是关于Maquette Javascript框架中组件之间的通信。
想象一下,我在Menu
组件中使用了Application
子组件:Application
实例想知道何时在Menu
实例中选择了一个菜单项为了交换应用程序中显示的主要内容(例如)。换句话说,我需要一种在子组件及其父组件之间进行通信的方法。如何在Maquette中实现这一目标?
当然,我可以将应用程序实例拥有的回调传递给菜单实例,该菜单实例将在选择项目时调用。但是我有点不愿意这样做,因为“选择”事件只是菜单组件的“渲染方”方面,所以我希望事件不要泄漏到我的Menu
API中,而是而是留在渲染功能/方法中。
所以,我想处理“渲染方”的事件。但我想这意味着我必须从CustomEvent
的渲染函数发送Menu
并在CustomEvent
的渲染函数中注册Application
处理程序,对吧?这个用例是否支持maquette?对于我的用例,还有CustomEvent
的其他替代方法吗?
谢谢!
PS:问题从故障#71重新发布,以获得更多答案。
答案 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)
或其他内容。