qooxdoo 活动最佳实践

qooxdoo events best practices

在我的应用程序中,我 loading/saving 一些数据 from/to qx.io.rest.Resource。为了隐藏 REST 的复杂性,我想向应用程序组件公开一个简化的高级接口;考虑 load()/save() 方法和一些事件来监控操作进度。

在这个场景中,一共有六个事件:[加载,保存] x [开始,成功,失败]。 (我对监控传输的数据量不感兴趣,因为典型的请求不会超过 1KB。)

best/preferred 对此事件方案建模的方法是什么?我是使用单一事件类型并将所有信息打包到事件数据中,还是使用不同的事件类型?我应该延长 qx.event.type.Event, or should I adopt an existing class like qx.event.type.Data 吗?

这在很大程度上取决于您的事件的自然使用模式;例如,如果任何想要了解进度的代码通常需要订阅所有三个 [starting, success, failure ] 那么添加 "progress" 类型 qx.event.type.Data 事件会更合适,并且数据将包含更细粒度的信息。

这是 Qooxdoo 中的常见模式 - 例如,查看 qx.data.Array 并且它是 "change" 事件。事件的数据包括变化是什么的信息,但是监听的事件只有一个。

"load" 和 "save" 是完全不同的事件,因此您可能最终会得到 "load"、"save" 和 "progress"

我正在使用 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",
  },

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

加载、保存和删除事件在启动时触发,而 methodSuccess、methodError 在传输成功或错误时触发。

方法 load、save、del 被实现以启动这些操作,发送一个对象 ID 一个 sessionid 和一些有效负载作为 JSON。