2013-10-10 31 views
0

考虑这个数组:如何遍历数组中的当前对象并仅在Handlebars中打印值?

var urls = [ 
    { alias : 'home', 
     path : '/page/home', 
     title: 'Home', 
     desc : 'simple test' 
    }, 
    { alias : 'home1', 
     path : '/page/home1', 
     title: 'Home1', 
     desc : 'simple test1' 
    }, 
    { alias : 'home2', 
     path : '/page/home2', 
     title: 'Home2', 
     desc : 'simple test2' 
    }, 
]; 

我如何可以遍历所有属性的对象内部的数组中,并打印他们的价值观?我不在乎物业的名称。

我想做些事情,如:

{{#urls}} 
    <tr> 
    {{#each .}} 
    <td> 
    {{value}} 
    </td> 
    {{/each}} 
    </tr> 
{{/urls}} 

,这将输出

<tr><td>home</td><td>/page/home</td><td>Home</td><td>simple test</td></tr> 
<tr><td>home1</td><td>/page/home1</td><td>Home1</td><td>simple test1</td></tr> 
<tr><td>home2</td><td>/page/home2</td><td>Home2</td><td>simple test2</td></tr> 

我不想类型:

{{#urls}} 
    <tr> 
    <td> 
    {{alias}} 
    </td> 
    <td> 
    {{path}} 
    </td> 
    <td> 
    {{title}} 
    </td> 
    <td> 
    {{desc}} 
    </td> 
    </tr> 
{{/urls}} 

我有可能超过10个属性,所以我不想在任何想要遍历它们的地方键入它们的名称。

我的问题是我不知道如何在迭代中访问当前对象或将它传递给帮助器。你知道如何在Handlebars中做到这一点?

我不想把值放在数组中,而是因为我仍然需要查看调试的属性。

回答

0

工作jsFiddle

助手:

Handlebars.registerHelper('renderUrl', function(urls) { 
    var dom = ''; 

    urls.forEach(function (url) { 
     dom += '<tr>'; 

     for(key in url) { 
      dom += '<td>' + url[key] + '</td>' 
     } 

     dom += '</tr>'; 
    }); 

    return new Handlebars.SafeString(dom); 
}); 
+0

谢谢,但我不想键入属性的名称。我可能有超过10个属性我想迭代他们而不输入他们的名字。 – eloone

+0

@eloone这很容易。更新我的小提琴。 http://jsfiddle.net/X9HCF/5/ – user10

+0

@eloone这是你想要什么或更多的东西? – user10

相关问题