【问题标题】:Send/receive data from one class to another从一类发送/接收数据到另一类
【发布时间】:2018-03-21 17:27:54
【问题描述】:

比方说:

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(),这可能吗?

提前致谢

【问题讨论】:

    标签: qooxdoo


    【解决方案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
      });
    

    【讨论】:

    • Derrell,从现在开始你就是我的英雄;)它就像一个魅力!非常感谢,为我节省了大量的工作(和代码)。穆哈斯·格拉西亚斯。
    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多