javascript - jsRender for in for,但是针对2种不同的结构

标签 javascript json jsrender templating-engine

嗨,我有这两个不同的东西:

columns = {
 name:"Name",
 ref:"Reference"
}

items:[
{ id:1, name:"Dan", ref:"01" },
{ id:2, name:"Dan2", ref:"02" }]

我需要将它们放在表格中,例如:

| Name | Reference |
| Dan  | 01        |
| Dan2 | 02        |

通常这将是:

{{for columns}}
  {{:name}} {{:ref}}<br>
{{/for}}
{{for items}}
  {{:name}} {{:ref}}<br>
{{/for}}

但是,我在这两个对象中的键是动态的,所以我想要在 javascript 中实现以下内容:

var header = "";
for(key in Object.keys(columns){
   header+=" "+columns[key));
}
console.log(header);
for(var i=0;i<items.length;i++){ 
  var item = items[i]; 
  var line ="";  
  for(key in Object.keys(columns){
     line+=" "+items[key);
  }
  console.log(line);
}     

有人可以提出建议吗?

最佳答案

你可以这样做:

<script id="tmpl" type="text/x-jsrender">
    <table><thead><tr>
        {{props columns}}
            <th>{{:prop}}</th>
        {{/props}}
    </tr></thead>
    <tbody>
        {{for items}}
            <tr>
                {{props ~root.columns ~item=#data}}
                    <td>{{:~item[key]}}</td>
                {{/props}}
            </tr>
        {{/for}}
    </tbody></table>    
</script>

{{props}} 迭代对象的属性 - 在 {{props}} block 中,key 是属性(字段)名称,prop 是值。 (参见http://www.jsviews.com/#propstag)。

~item=#data 定义一个变量(“辅助属性”),您可以从嵌套 block 中访问该变量,以便轻松获取“父数据”那里。 (参见http://www.jsviews.com/#samples/jsr/paths)。

以上假设使用以下数据:

var data = {
    columns: {
        name:"Name",
        ref:"Reference"
    },
    items:[
        { id:1, name:"Dan", ref:"01" },
        { id:2, name:"Dan2", ref:"02" }
    ]
}

$("#result").html(tmpl.render(data));

关于javascript - jsRender for in for,但是针对2种不同的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061054/

相关文章:

javascript - 如何用 jest 模拟和测试链式函数?

iphone - JSON IPHONE : How to send a JSON request and pull the data from a server?

php - 包含存储为 blob 的图像的 JSON 数组

javascript - 如何将 d3.js 与 JSRender 结合使用?

javascript - jsviews 中的辅助函数

javascript - 我正在尝试打开一个具有某种效果的模态窗口

javascript - 使用 javascript 创建和修改 xml 文件(想在客户端保存 xml 文件)

python - Bottle 的 jsonify/pretty-print JSON

jsrender - 将 jsRender 模板存储在单独的 js 文件中

javascript - 从预输入下拉列表中调用 Controller 功能