1

基本的に私が探しているのは、任意のJSONオブジェクトがテーブルにレンダリングされるビューを作成することです。各行は単純にkey: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>

これがどのように可能であるかについて何か考えはありますか?ドキュメントで探しているものが見つからないようです。どんな助けでも大歓迎です。

4

2 に答える 2

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>'
]

これが将来同じ種類の問題を抱えている他の人に役立つことを願っています!

于 2012-06-28T12:47:15.200 に答える
0

よりエレガントなソリューションは

    <tpl foreach=".">
       <tr>
        <td>{[xkey]}</td>
        <td>{.}</td>
       </tr>
    </tpl>
于 2014-04-01T07:01:55.557 に答える