"mu is too short"のアドバイスで。そして、私は複雑なテンプレート作成に興味深いアプローチを思いつきました。 *ほぼ動作します!
<script type="text/template" id="template">
<h1>{{title}}</h1>
<h3>{{calc}}</h3>
<ul>
<li><a href="{{digits}}">{{hair}}</a></li>
</ul>
</script>
そして:
var content = {
title: "Black Book",
girls: ["blonde", "brunette", "redhead"],
digits: ['123', '456', '789'],
calc: function() {
return 2 + 4;
}
};
そして、私はこのようなテンプレートを持っている:
それでは、私はこのコンテンツを持っている(またはデータまたはビュー)私はテンプレートに入れたいとしましょう私が欲しい最終結果は次のとおりです:
<h1>Black Book</h1>
<h3>6</h3>
<ul>
<li><a href="123">blonde</a></li>
<li><a href="456">brunette</a></li>
<li><a href="789">redhead</a></li>
</ul>
私たちが遭遇する問題は、私たちが配列(またはリスト)をネストしていることですMustache.render(html、content)にしようとすると、1つのli項目または1つのhref = ""属性内の配列全体で終了します。だから悲しい...
彼はアプローチであり、テンプレートを複数回通過します。初めて、トップレベルのアイテムをパススルーして置き換え、次のパススルー用にテンプレートを調整します。 2回目は、リストの1つを調整し、コンテンツのレイヤー数がどのくらいあるかなど、3番目のパスのテンプレートを調整します。ここで新たな出発テンプレートは次のとおり第1トップレベルのものでフィルを通過し、{{に変更{{数字}}で
<script type="text/template" id="template">
<h1>{{title}}</h1>
<h3>{{calc}}</h3>
<ul>
{{#hair}}
{{#digits}}
<li><a href="{{digits}}">{{hair}}</a></li>
{{/digits}}
{{/hair}}
</ul>
</script>
。私たちはMustache.render(template2、content.digits)を呼び出しますを通じて、次のパスで
<h1>Black Book</h1>
<h3>6</h3>
<ul>
{{#hair}}
{{#digits}}
<li><a href="{{.}}">{{hair}}</a></li>
{{/digits}}
{{/hair}}
</ul>
;:今}}
$.each(content, function (index, value) {
template2 = template.replace(/{{title}}/ig, content.title)
.replace(/{{calc}}/ig, content.calc)
.replace(/{{digits}}/ig, '{{.}}');
});
あなたはこれを持っていますそれは私達に与えるべきである:
<h1>Black Book</h1>
<h3>6</h3>
<ul>
{{#hair}}
<li><a href="123">{{hair}}</a></li>
<li><a href="456">{{hair}}</a></li>
<li><a href="789">{{hair}}</a></li>
{{/hair}}
</ul>
そしてそれは私の論理が死んでいる場所です。これを考えているどんな助けも揺れません!私は{{hair}}のブロック要素を取り出して、$ .eachをそれぞれcontent.girlsに通し、.replaceを3回スタックすることができると思っています。あるいは、最低レベルのコンテンツから始めて、自分のやり方で作業してみることができます。私は知らないよ。
このすべての基本的なことは、この種のネスティングや複数のパススルーが口髭に入れられるための「論理的でない」方法があるかどうか疑問に思っています。
これは参考になります。 nettutsやテンプレートのデモを見ているすべての例は、1つのことを繰り返しています。私が考えることができる唯一の他の解決策は、しかし、うまく実装できなかったのは、2番目のテンプレートを入れ子にすることでした。 – Costa
いくつかのデータを並べ替えることについては助言を受けましたが、私は別のものを試しました。テンプレートを何度も繰り返し、2回目に別のものを最初に置き換えました。それは良い戦略のようだった。誰かが興味があれば、私はそれを投稿することを知らせてください。 – Costa
@Costa:あなた自身の質問に答えることができます。私はあなたが思いついたことについて興味があります。 –