2010年5月27日木曜日

ExtJs-84 writeイベントとsaveイベントの問題とexceptionイベント

なぜかわからないけど、
saveイベントにwrite用のハンドラが設定してあって。。
いわずもがな、write用に実装してあるから
期待した結果は得られないわけです。

直しました。過去のエントリでsaveイベントが発火されてwriteが呼ばれる云々
ってのはこれが原因でした。ごめんなさい。

で、今の基礎実装でサポートするのは
write
load
exception
と絞って実装することにした。

exceptionイベントハンドラの実装をモデルに追加して
今回の騒動もひとまず終了。

exceptionの
type: remoteとresponseの違いは
httpProxyのonWrite
reader.readResponseを実行してるブロック内で
例外が発生した場合はresponse
そうじゃなくてsuccessがfalseで設定されてきた場合はremoteと。
そんな具合っぽいです。

>(ほかのProxyクラスもたぶん同様になってるとおもう。ScriptTagProxyはそうだった。
>ブロックといってもres = reader.readResponse(action, response);の一行ですが、
>内部ではレスポンスの有無、rootの有無!!←(これこれ)。
>レスポンスオブジェクト生成、successプロパティ有無のチェックなどをやってます。)
>#rootの有無チェック・・・これらすべてちゃんとexception投げてくれてるではないか!
>#過去のwriterでどはまりした件。。。だからちゃんと実装しないとどはまりする。

だから雰囲気としてはこんなかんじになるのかな。
exceptioncallback = function(proxy, type, action, options, res, arg) {
    var me = this;
    if (type === 'remote') {
        alert('serverサイドでの不備');
    } else if (type === 'response') {
        alert('response内容解析中の例外発生');
    }
    //画面の再描画
    if (me.view.hasListener('crudreflesh')) {
        me.view.fireEvent('crudreflesh');
    }
};

0 件のコメント: