Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

KumuでのComponent呼び出し 案1

Componentパラメータをセットしないとなるとやっぱ名前?
名前っていうとコールバックメソッド名でもいいかなと。
コールバック関数と呼び出しコンポーネントって大体一致すんじゃないかなあ。
でコールバックでbindするサンプル。
基本的にAjax

  • サーバへリクエスト送信する
  • 受け取った値をサーバ側で処理
  • 結果を受け取り表示する処理

って流れなのでこの一連がセットになればいいのかなと。
なのでサーバへリクエスト送信する処理と結果受け取って表示する処理が対になるようなものがあればいいなあと。
なのでコールバックメソッド名と呼び出しコンポーネントを対にしてみる。

kumu.getComponentName = function(func){
    var str = func.toString();
    ret = str.match(/[0-9A-Za-z_]+\(/).toString();
    ret = ret.substring(0,ret.length-1); 
    var arr = ret.split('_');
    return arr;
};

コンポーネント名とメソッド名の区切りに"."を使うとめんどい事になるので"_"で。
test.html

function sampleBean_getData(data){
    /* response処理*/
}

var callback = sampleBean_getData;

var arr = kumu.getComponentName(callback);

//Component名
alert(arr[0]);
//メソッド名
alert(arr[1]);

という感じ。
これを使うと

function sampleBean_getData(data){
    /* response処理*/
}
kumu.ajax(sampleBean_getData);
//kumu.ajax(sampleBean_getData, {value:'01'});

でS2のsampleBeanのgetDataメソッドを呼び出すことができる。
もちろん結果はsampleBean_getDataで処理すればよい。
パラメータは第2引数以降で渡す。
同じ名前のコールバック関数を使うので

  • 流用できるコールバック関数であれば外部ファイル化して読み込む
  • 動きを変えたい時は読み込みをやめ、同名ファンクションを別途作成

で一応柔軟に処理も切り替えられるんでないかなあ。
うくく。