2011-06-22 11 views
0

jQueryテンプレートでは、{{wrap}}テンプレートタグを使用して別のテンプレートの結果をラップしようとしています。この2番目のテンプレートは、HTMLではなくプレーンテキストをレンダリングします。私は現在、ラップされたテンプレートによってレンダリングされたプレーンテキストを取得すると予想される空の文字列を取得します。jquery-template {{wrap}}を使用してプレーンテキストをラップする

平文を<div>タグのようなHTML要素で囲むと、すべて正常に動作しますが、結果に<div>が表示されます。私は、{{html}}タグを動作させるために私のコンテンツの周りにダミーのタグを作成しても問題ありませんが、レンダリングされた結果には望みません。

実際にHTMLも生成するテンプレートを可能な場合にはラップすることもできます。同じラッパーテンプレートを両方のケースで使用できるようにすると良いでしょう。ここで

は私のHTMLです:

$("#x").html($("#myTmpl").tmpl()); 

このコードは、このjsFiddleで発見することができます:http://jsfiddle.net/bernardchen1/BYdeg/

+0

'{{wrap}} 'の代わりに' {{tmpl}} 'タグを使用するようにコードをリファクタリングする可能性があります) –

+0

はい、それでも{{tmpl}}が必要です私はラップしようとしている。 –

答えて

0

私は最終的に

<div id="x" /> 
<script id="myTmpl" type="text/x-jquery-tmpl"> 
    The following wraps some non-HTML content: 
    {{wrap "#wrapper"}} 
    help 
    {{/wrap}} 
</script> 

<script id="wrapper" type="text/x-jquery-tmpl"> 
    <table><tbody> 
     <tr> 
      <td> 
       Wrapped content: 
       {{html $item.html}} 
      </td> 
     </tr> 
    </tbody></table> 
</script> 

そして、ここでは、JavaScriptがテンプレートを呼び出すために使用されます解決策が見つかりました。私はプレーンテキスト(または他のテンプレートによって生成されたHTML)をラップするためにダミータグを使用して作成し、ダミータグを取り除くことができるテンプレート呼び出しに渡す関数を作成しました。私はこのように呼びます:{{html $data.clean($item)}}。 "クリーン"関数は、内部テンプレートによって返されるコンテンツにアクセスする必要があります。これは$item.wrapped[0]です。私はそのコンテンツを持っていれば、内部HTMLをclean関数から返すことができました。

私は$item.wrappedにアクセスしているはずだと心配です。

最終的には、このダミータグとクリーニング機能を必要としないように自分のコードをリファクタリングすることができます。

このソリューションは、ここで見つけることができます:http://jsfiddle.net/bernardchen1/nmzWt/

編集:別のDOM要素にテンプレートのHTMLを添付して、バックアウトデータをつかむためにappendToを呼び出すために、別の解決策があります。

関連する問題