2016-11-08 37 views
0

如何輸出以下人名?例如馬丁和塔比塔?數組的輸出鍵?

people: 
- martin: 
    job: Developer 
    skills: 
     - python 
     - perl 
     - pascal 
- tabitha: 
    job: Developer 
    skills: 
     - lisp 
     - fortran 
     - erlang 

這裏的循環:

{{#each people}} 
    {{ this }} 
{{/each}} 
+0

我沒有JSON只是這個YAML – panthro

+0

Kevin Kloet在句柄的語法。 – panthro

+0

@KevinKloet與把手有什麼關係? – epascarello

回答

1

我已經找到了答案是:

{{#each people}} 
    {{@key}}: {{this}} 
{{/each}} 
+0

這就是你在屏幕上通過這樣做得到的結果:'0:[object Object] 1:[object Object]'...你打印的是按鍵的名稱,而不是OP中的名字 –

0

您可以創建一個塊幫手list遍歷people並使用當前index作爲私有變量來獲取該對象中第一個鍵的名稱:Object.keys(context[i])[0]

代碼:

var people = [{"martin": {"job": "Developer","skills": ["python","perl","pascal"]}}, {"tabitha": {"job": "Developer","skills": ["lisp","fortran","erlang"]}}]; 
 

 
// Register list helper 
 
Handlebars.registerHelper('list', function (context, options) { 
 
    var out = '<ul>', 
 
     data; 
 

 
    if (options.data) { 
 
    data = Handlebars.createFrame(options.data); 
 
    } 
 

 
    for (var i = 0, l = context.length; i < l; i++) { 
 
    if (data) { 
 
     data.index = Object.keys(context[i])[0]; 
 
    } 
 

 
    out += '<li>' + options.fn(context[i], { 
 
     data: data 
 
    }) + '</li>'; 
 
    } 
 

 
    out += '</ul>'; 
 
    return out; 
 
}); 
 

 
// The main template 
 
var main = Handlebars.compile($('#main').html()); 
 

 
// Register the list partial that 'main' uses 
 
Handlebars.registerPartial('list', $('#list').html()); 
 

 
// Render the list 
 
$('#output').html(main({ 
 
    people: people 
 
}));
<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/4.0.5/handlebars.min.js"></script> 
 

 
<script id="list" type="x-handlebars-template"> 
 
    {{#list people}} 
 
    {{@index}} 
 
    {{/list}} 
 
</script> 
 

 
<script id="main" type="x-handlebars-template"> 
 
    {{> list}} 
 
</script> 
 

 
<div id="output"></div>

:我已轉換的YAML爲代碼示例的陣列。