【问题标题】:How to iterate over the current object in an array and only print the values in Handlebars?如何遍历数组中的当前对象并仅打印 Handlebars 中的值?
【发布时间】:2013-10-10 08:44:48
【问题描述】:

考虑这个数组:

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

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

【问题讨论】:

    标签: handlebars.js


    【解决方案1】:

    工作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);
    });
    

    【讨论】:

    • 谢谢,但我不想输入属性的名称。我可能有超过 10 个属性要在不输入名称的情况下对其进行迭代。
    • @eloone 这是你想要的还是别的什么?
    • 您的解决方案在这里非常适合前台,但我正在尝试使其在服务器上运行,我已尝试在服务器上应用您的助手,但我认为我可以使用 { {#each .}}{{value}}{{/each}}
    猜你喜欢
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    相关资源
    最近更新 更多