从couchdb渲染附件名称而不进行转换

时间:2012-09-04 06:11:32

标签: json couchdb mustache handlebars.js

使用把手或小胡子模板从couchdb 无需转换呈现附件名称。

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

我认为这与Getting key's in handlebar重复。

// 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;
});

1 个答案:

答案 0 :(得分:1)

车把的开发人员正在讨论putting this in

如果您只是想添加它,帮助者应该完成这项工作。你的模板会是这样的。

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

帮助程序基本上只是遍历对象并动态进行转换。它遍历对象并将键添加为_key变量。您不必包含else语句,默认情况下它不会返回任何内容。