前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

局所変数を使用する

ループ中にローカル変数を保持しておきたいようなケースがあった。JSPのTaglibでいうところの <c:set>のようなものである。

そこで、Helperを作ってみた。
opitonsにはdataオブジェクトが含まれているので、そこにattrというオブジェクトを作り、hashMap的に使う事にする。

Handlebars.registerHelper('set', function (key,val,options) {
    if (options.data) {
        if(!options.data.attr){
            options.data.attr = {};
        }
        options.data.attr[key] = val;
    }
    return null;
});

サンプルデータ。

{
 name:'Taro Yamada'
}

テンプレート。標準の@data変数と同様にして@attrで値が取得でき
他の組み込みヘルパーでも使える。変数の有効範囲はsetを使用したブロックに準ずる。ループ内で定義すればループ内のみ有効となる。

//値をセット
{{set 'nameKey' name}}

//セットした値の出力
{{@attr.nameKey}}

出力

Taro Yamada


問題はattrという変数が他のヘルパーや将来的に公式な変数として使われると競合することになるので注意が必要。