0

考虑这个数组:

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 中做到这一点吗?

我不想将值放在数组中,因为我仍然需要查看属性以进行调试。

4

1 回答 1

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);
});
于 2013-10-10T08:53:57.590 回答