从一个类发送/接收数据到另一个类

时间:2018-03-21 17:27:54

标签: qooxdoo

让我们说:

qx.Class.define( 'App.Dlg1', { extend : qx.ui.window.Window, 
construct : function()
{
...
},
members :
{
    myFunc1 : function()
    {
    }
}
} )

qx.Class.define( 'App.Dlg2', { extend : qx.ui.window.Window, 
construct : function()
{
...
},
members :
{
myFunc2 : function()
    {
    }
}
} )

这两个类都是不同的文件,如何在这些类之间发送 - 接收数据,我需要从myFunc2()发送一些信息到myFunc1(),这可能吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果两个类是相关的,则可以使用事件,并让一个类的实例监听由另一个类的实例触发的事件。

但是,听起来,就像你在考虑无关的实例一样。在这种情况下,一个有用的qooxdoo功能是消息总线。

例如,在Dlg1中,您可以执行以下操作,以等待" dialog.data"类型的消息。 (任意字符串,尽管如果类型中有点分隔字段,消息总线可以使用一些特殊的通配符属性):

var messageBus = qx.event.message.Bus.getInstance();

messageBus.subscribe(
  "dialog.data",
  function(busMessage)
  {
    var message = busMessage.getData();

    console.log("a=" + message.a);
  },
  this);

然后,在Dlg2中,您可以像这样在总线上发送消息,这将导致Dlg1中的订户显示a=23

var messageBus = qx.event.message.Bus.getInstance();

messageBus.dispatchByName(
  "dialog.data",
  {
    a : 23
  });