Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 方形支架阵列通道和把手模板_Node.js_Handlebars.js - Fatal编程技术网

Node.js 方形支架阵列通道和把手模板

Node.js 方形支架阵列通道和把手模板,node.js,handlebars.js,Node.js,Handlebars.js,我正在做一个节点项目,有一个诱人的车把引擎。我需要在表中表示一个非常大的对象。用户可以选择要查看的列 我有一个名为columns的变量,它保存用户选择的列,我们将假装它看起来像 columns = ['name','email'] 我有一个大的物体阵列 items = [{ name:'foo', email:'foo@foo.com', otherPropN:'other...' }, ...] 这是我第一次尝试呈现只包含列名称和电子邮件的表 <t

我正在做一个节点项目,有一个诱人的车把引擎。我需要在表中表示一个非常大的对象。用户可以选择要查看的列

我有一个名为columns的变量,它保存用户选择的列,我们将假装它看起来像

columns = ['name','email']
我有一个大的物体阵列

items = [{
    name:'foo',
    email:'foo@foo.com',
    otherPropN:'other...'
}, ...]
这是我第一次尝试呈现只包含列名称和电子邮件的表

      <table class="table">
                <thead>
                    {{#each columns}}
                        <th>{{this}}</th>
                    {{/each}}
                </thead>
                <tbody>
                    {{#each items}}
                        {{#each ../columns}}
                            <td>{{*WHAT TO PUT HERE!*}}</td>
                        {{/each}}
                    {{/each}}
                </tbody>

            </table>
谢谢

好吧,我想我现在明白了。
我将创建两个单独的模板对象—整个表和一个“行”模板。然后,您必须执行一点javascript逻辑,使每一行模板都传递相应的模型。

立即想到两种可能性:

  • 使用自定义辅助对象修改把手
  • 修改您的数据,以便更好地与车把的思维方式保持一致
  • 第一个选项是这样一个简单的帮助器:

    Handlebars.registerHelper('property', function(o, k) {
        return o[k];
    });
    
    然后你可以说:

    <td>{{property ../this this}}</td>
    
    然后将
    items\u mangled
    作为
    items:items\u mangled
    处理到模板函数,您的模板将具有:

    {{#each items}}
        <tr>
            {{#each this}}
                <td>{{this}}</td>
            {{/each}}
        </tr>
    {{/each}}
    
    {{#每个项目}
    {{{#每个这个}
    {{this}}
    {{/每个}}
    {{/每个}}
    

    基本上,将数组和对象数组转换为JavaScript中的单个数组,这样手柄就可以处理它最喜欢的东西(数组)。Handlebar更倾向于在模板之外完成大部分逻辑演示

    我不太清楚您的数据结构。请再详细说明一下。我不太明白。这两个对象是什么样子的?我已经详细阐述了一个问题:我是否可以为节点注册一个帮助器?在使用模板之前,只需调用
    handlebar.registerHelper(…)
    。我可能会把它们都放在一个
    handlebar\u helpers.js
    文件中,然后在拉入handlebar后立即运行它。
    // Or the nested for-loop equivalent
    var items_mangled = items.map(function(item) {
        return columns.map(function(column) {
            return item[column];
        });
    });
    
    {{#each items}}
        <tr>
            {{#each this}}
                <td>{{this}}</td>
            {{/each}}
        </tr>
    {{/each}}