2016-04-26 9 views
1

私のアプリケーションでは、qx.io.rest.Resourceからのデータをロード/保存しています。 RESTの複雑さを隠すために、単純化された高水準インターフェースをアプリケーション・コンポーネントに公開したい。 load()/ save()メソッドといくつかのイベントを考えて、操作の進捗状況を監視します。qooxdooイベントのベストプラクティス

このシナリオでは、[ロード、保存] x [開始、成功、失敗]の合計6つのイベントがあります。 (通常のリクエストは1KB未満であるため、転送されるデータの量を監視することには関心がありません)

このイベントスキームをモデル化するには、どのような方法が最適ですか?単一のイベントタイプを使用し、すべての情報をイベントデータにパックするか、または異なるイベントタイプを使用しますか?私はqx.event.type.Eventを延長すべきですか、qx.event.type.Dataのような既存のクラスを採用すべきですか?

答えて

3

イベントの自然な使用パターンに大きく左右されます。たとえば、進行状況を知りたいコードが[開始、成功、失敗]の3つすべてに通常加入する必要がある場合は、qx.event.type.Dataタイプの "progress"イベントを追加する方が適切です。データにはきめ細かな情報が含まれています。

これはQooxdooの一般的なパターンです - たとえば、qx.data.Arrayを見て、それが "change"イベントです。イベントのデータには、変更の内容に関する情報が含まれますが、聴くイベントは1つだけです。

「負荷」と「保存」はかなり異なるイベントがあるので、おそらくあなたは、「保存」、「負荷」で終わるだろう、と「進歩」

+0

[ロード、セーブ] x [開始、成功、失敗]私は、次の6つのイベントタイプのデカルト積を意味します:ロード開始、ロード成功、ロード失敗、セーブ失敗。私は、それぞれの処理フェーズ(開始、成功、失敗)ごとに2つのイベントタイプ(ロードと保存)を実装する必要があると思います。 – Dimitri

2

私はミックスインの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", 
    }, 

これらはqx.io.rest.ResourceでDELETE、PUT、GETメソッドは、要求を使用して保存し、デル、RESTパスの負荷に対応します。

イベントのload、saveおよびdelはstartメソッドで発生しますが、methodSuccess、methodErrorは発生しました。トランスポートの成功またはエラーです。

load、save、delメソッドは、これらのアクションを開始するために実装されています。セッションIDと一部のペイロードをJSONというオブジェクトIDで送信します。

関連する問題