2012-01-22 170 views
6

我在这里使用此数据:http://pastie.org/3231052 - 如何使用Mustache或Handlebars显示键而不是值?Mustache.js - 显示键值而不是值

[{"interval":"2012-01-21", 
    "advertiser":"Advertisers 1", 
    "offer":"Life Insurance", 
    "cost_type":"CPA", 
    "revenue_type":"CPA", 
    ... etc ... 
}] 
+0

你的意思是要循环的每个项目,并显示键值对? –

+0

是的,所以关键将在 X数量。然后在​​中的值,无论有多少行。一直在挣扎。在整个 – Coughlin

+0

中使用jQuery在较新版本的Handlebars中,这是默认处理的:http://stackoverflow.com/questions/11884960/how-to-get-index-in-handlebars-each-helper – fuzzyvagina

回答

1

如果要显示键值对,可以在Handlebars中编写助手。

Handlebars.registerHelper('eachkeys', function(context, options) { 
 
    var fn = options.fn, inverse = options.inverse; 
 
    var ret = ""; 
 

 
    var empty = true; 
 
    for (key in context) { empty = false; break; } 
 

 
    if (!empty) { 
 
    for (key in context) { 
 
     ret = ret + fn({ 'key': key, 'value': context[key]}); 
 
    } 
 
    } else { 
 
    ret = inverse(this); 
 
    } 
 
    return ret; 
 
}); 
 

 
$(function() { 
 
    var data = {"interval":"2012-01-21", 
 
     "advertiser":"Advertisers 1", 
 
     "offer":"Life Insurance", 
 
     "cost_type":"CPA", 
 
     "revenue_type":"CPA"}; 
 
       
 
    var source = $("#template").html(); 
 
    var template = Handlebars.compile(source); 
 
    $('#content').html(template({'data': data})); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0.beta2/handlebars.min.js"></script> 
 
<script id="template" type="text/x-handlebars-template"> 
 
    {{#eachkeys data}} 
 
    <li>{{this.key}} - {{this.value}}</li> 
 
    {{/eachkeys}} 
 
</script> 
 
<div id="content"> 
 
</div>

编辑

看起来这是不太你想要什么,但有可能拿出一个帮手,会做的伎俩。

+0

我觉得非常相似,他们的钥匙是在这里的钥匙为他们在字符串中返回的x个量?那样有用吗? – Coughlin

+0

然后根据密钥 – Coughlin

+0

在适当列中的​​中的值帮助您查看要从数据生成的HTML示例。数据是对象数组吗? (目前尚不清楚,因为只给出了一个数组元素。)如果是这种情况,您可以简单地遍历第一个元素中的数组键以生成标题,然后(假设列在整个数据中是统一的),填充行为每个项目。 –

1

我使用Handlebars修改了以前的响应来处理对象键值对。这是因为只是做以下简单:

<script id="template" type="text/x-handlebars-template"> 
    {{@entries}} 
    <li>{{KEY}} - {{VALUE}}</li> 
    {{/entries}} 
</script> 
<div id="content"> 
</div> 

我把小提琴的例子,希望它可以帮助人在那里。请注意,这个实现取决于把手

Mustache Attribute addition.

+1

这不是胡子 – Tebe

+0

你能更具体吗,我想你没有看到链接到小提琴 –

+0

我有一个快速的样子,你把它称为手把,而不是胡子。必须是不同的图书馆,或? – Tebe