如何在tpl中访问属性名称(而不仅仅是值)?

时间:2012-06-28 09:47:33

标签: sencha-touch extjs sencha-touch-2

基本上我要做的是创建一个视图,其中任意JSON对象将呈现为一个表,每行只是键:value(可以安全地假设该对象不包含嵌套数组/对象/等)。

例如,如果我有一个像这样的对象:

{
    "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>

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

2 个答案:

答案 0 :(得分: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>'
]

希望这有助于其他人在将来遇到同样的问题!

答案 1 :(得分:0)

更优雅的解决方案是

    <tpl foreach=".">
       <tr>
        <td>{[xkey]}</td>
        <td>{.}</td>
       </tr>
    </tpl>