2016-04-02 8 views
1

変数内にタグを展開する方法はありますか?変数内にタグを展開

私はこれが部分的な目的であると理解します。しかし、以下の例で分かるように、ビューの構造上、部分的な部分を使うのは実用的ではありません。

そうでない場合は、下のビューの構造をどのように変更する必要がありますか?現在、各エントリのhtmlプロパティを事前にレンダリングしています。これは理想的ではないようです(また、Mustacheの区切り文字を変更するなどの機能を無効にします)。

ブログのホームページのためのビュー:

var view = { 
    title: 'Example blog', 
    entries: [ 
    {url: '/a', html: '<p>The first entry on {{title}}</p>'},   
    {url: '/b', html: '<p>The second entry on {{title}}</p>'},  
    {url: '/c', html: '<p>The third entry on {{title}}</p>'} 
    ] 
}; 

対応するテンプレート:

{{#entries}} 
    {{{html}}} 
{{/entries}} 

Mustache.renderを呼び出した後、私はこれを受け取ります。

<p>The first entry on {{title}}</p>   
<p>The second entry on {{title}}</p> 
<p>The third entry on {{title}}</p> 

そして、私はこれを受け取りたい:

var view = { 
    title: 'Example blog', 
    entries: [ 
    {url: '/a', position: 'first'},   
    {url: '/b', position: 'second'},  
    {url: '/c', position: 'third'} 
    ] 
}; 

{{#entries}} 
    <p>The {{position}} entry on {{title}} blog</p> 
{{/entries}} 

答えて

3

口ひげがこの、を行わないと、あなたはにそれをしたくない:

<p>The first entry on Example blog</p>   
<p>The second entry on Example blog</p> 
<p>The third entry on Example blog</p> 
1

はこれを試してみてください。これは「口ひげ注射」と呼ばれ、SQLインジェクションと同等です。

Twitterはクライアント側でMustacheを使用し始めたとき、Mustacheタグ付きのURLをtweetingすると、そのツイートを見た誰かがそれをリツイートするという攻撃がありました。修正は、Mustacheがタグを二重に拡張するのを防ぐことでした。

+0

申し訳ありませんが、私はより明確にすべきでした。各エントリーのHTMLはとても反復的であるとは思えません。それらはブログ投稿であり、その中には口ひげタグが含まれています。 – davidmerfield

関連する問題