1

ハンドルバーまたは口ひげテンプレートを使用して、変換せずにcouchdbから添付ファイル名をレンダリングします。

{
   "_id":"123",
   "_attachments":{
      "evil.jpg":{
         "content_type":"image/jpeg",
         "revpos":32,
         "digest":"md5-CKtT5WWRLkmGDD3/DhK6FQ==",
         "length":41915,
         "stub":true
      }
   }
}

これはハンドルバーのキーの取得と重複していると思います。

// based on the `#each` helper, requires jQuery (for jQuery.extend)
Handlebars.registerHelper('each_hash', function(context, options) {
    var fn = options.fn, inverse = options.inverse;
    var ret = "";

    if(typeof context === "object") {
        for(var key in context) {
            if(context.hasOwnProperty(key)) {
                // clone the context so it's not
                // modified by the template-engine when
                // setting "_key"
                var ctx = jQuery.extend(
                    {"_key":key},
                    context[key]);

                ret = ret + fn(ctx);
            }
        }
    } else {
        ret = inverse(this);
    }
    return ret;
});
4

1 に答える 1

1

ハンドルバーの開発者はこれを入れることについて話し合っています

あなたがそれを追加したいだけなら、そのヘルパーはとにかく仕事をするべきです。テンプレートは次のようになります。

{{#each_hash _attachments}}
    {{_key}} - {{content_type}}
{{else}}
    You didn't pass in an object!
{{/each_hash}}

ヘルパーは基本的にオブジェクトを反復処理し、その場で変換を実行します。オブジェクトを反復処理し、キーを_key変数として追加します。elseステートメントを含める必要はなく、デフォルトでは何も返されません。

于 2012-09-21T04:59:59.743 に答える