qooxdoo事件最佳实践

时间:2016-04-26 13:57:40

标签: javascript qooxdoo

在我的应用程序中,我正在从/ qx.io.rest.Resource加载/保存一些数据。为了隐藏REST的复杂性,我想向应用程序组件公开一个简化的高级接口;想一想load()/ save()方法以及一些监视操作进度的事件。

在这种情况下,总共有六个事件:[加载,保存] x [开始,成功,失败]。 (我对监控传输的数据量不感兴趣,因为典型的请求将少于1KB。)

为此活动计划建模的最佳/首选方式是什么?我是否使用单一事件类型并将所有信息打包到事件数据中,还是使用不同的事件类型?我应该延长qx.event.type.Event,还是应该采用现有的类qx.event.type.Data

2 个答案:

答案 0 :(得分:3)

这在很大程度上取决于你的活动的自然使用模式;例如,如果任何想要了解进度的代码通常需要订阅[开始,成功,失败]的所有三个,那么添加"进展"更合适。类型为qx.event.type.Data的事件,数据将包含更细粒度的信息。

这是Qooxdoo中的一种常见模式 - 例如,查看qx.data.Array以及它" s"更改"事件。事件的数据包括有关更改内容的信息,但只有一个事件需要收听。

"负载"并且"保存"是非常不同的事件,所以也许你最终会得到"加载","保存"和"进展"

答案 1 :(得分:2)

我正在使用mixin mylib.io.MREST,我在其中定义了以下事件:

   events:
   {
    "load"        : "qx.event.type.Event",
    "loadSuccess" : "qx.event.type.Data",
    "loadError"   : "qx.event.type.Data",

    "save"        : "qx.event.type.Event",
    "saveSuccess" : "qx.event.type.Data",
    "saveError"   : "qx.event.type.Data",

    "del"        : "qx.event.type.Data",
    "delSuccess" : "qx.event.type.Event",
    "delError"   : "qx.event.type.Event",
  },

这些对应于REST路径加载,保存和del使用请求方法GET,PUT,DELETE与qx.io.rest.Resource。

事件load,save和del在启动时被触发,而methodSuccess,methodError被触发,成功或错误传输。

实现方法load,save,del以启动这些操作,将对象id发送到sessionid,将一些有效负载发送为JSON。