2012-06-28 118 views
1

基本上我想要做的是创建一个视图,其中一个任意的JSON对象将被渲染到一个表中,每一行都只是键:值(可以安全地假定该对象不包含嵌套的数组/对象/等等。)。如何在tpl中访问属性名称(不仅仅是值)?

因此,举例来说,如果我有喜欢的对象:

{ 
    "Name": "John Doe", 
    "Age": 34 
} 

通常的方式来呈现,在一个TPL是:

<td>Name:</td><td>{Name}</td> 
<td>Age:</td><td>{Age}</td> 

不过,我希望此举视为我实际上不知道属性名称,所以我想要这样的事情:

<tpl for="."> 
    <td>{property.key}</td><td>{property.val}</td> 
</tpl> 

任何想法这可能吗?我似乎无法找到我在文档中查找的内容。任何帮助表示赞赏。

回答

1

对于任何面临着同样的问题,在未来,该解决方案我来其实是挺管用的,如果有点丑来看看......

基本上,内{[ ]}标签就可以执行任意代码,以及可以访问一些特殊的变量,比如values等等。这看起来似乎很有限,但是如果你只是在这些函数中包含一个自我执行的函数,它将返回你想要渲染模板中的值,那么你可以在这里做任何事情。

例子:

tpl: [ 
    '<table>', 
    '{[ (function() { var output = []; for (i in values) { output.push("<tr><td>" + i + "</td><td>" + values[i] + "</td></tr>"); } return output.join(""); }()) ]}', 
    '</table>' 
] 

希望这有助于其他人在未来的同一类的问题!

0

一个更优雅的解决方案将是

<tpl foreach="."> 
     <tr> 
     <td>{[xkey]}</td> 
     <td>{.}</td> 
     </tr> 
    </tpl> 
相关问题