web-dev-qa-db-ja.com

jqueryテンプレート内の<script>タグ

バックグラウンド:

私はswfobjectでロードされているyoutubeからのビデオを含むこのテンプレートを持っています。

質問:

スクリプトタグを含める方法はありますか...

<script type="text/javascript">
</script>

jQueryテンプレート内??

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    <script type="text/javascript">
        <!-- Some javascript here -->
    </script>
</script>

明らかにそれは直接機能しません、他のスクリプト内のスクリプトなしで同じことを達成する方法はありますか?

22
Carlos Muñoz
<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    <script type="text/javascript">
        <!-- Some javascript here -->
    {{html "</sc"+"ript>"}}
</script>

{{html "</ sc" + "ript>"}} replace </ script>を使用できます

24
Ronny Wang

これが唯一の方法かどうかはわかりませんが、テンプレートの生のHTMLとしてスクリプトを挿入できます。

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    {{html innerScript}}
</script>

次に:

var innerScript = '<script type="text/javascript"><!-- Some javascript here --></script>';
$('#filaVideoTemplate').tmpl({innerScript: innerScript});
4
David Tang
<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
   <!-- Some HTML here -->  
</script>



var data = [{ 'Id': '1', 'Name': 'a' }, { 'Id': '2', 'Name': 'b' }, { 'Id': '3', 'Name': 'c'}];

var renderedHtml = $('<div />').html($('#filaVideoTemplate').tmpl(data)).append(('<script type="text/javascript"><!-- Some javascript here --></endScript>').replace(/endScript/g, 'script')).html();

データが単一の場合、コードの上のコレクションは正しくありません。else(データはコレクションです)複数回バインドするために使用されるスクリプトタグ(data.length times)

0
Thulasiram

何を求めているのかわかりませんが、ajaxリクエストを使用して、テンプレートを(js)ファイル内に配置できます。私のtemplate_script.jsは次のようにajaxを使用します:

$('the element').load('template_script.js').then( OK , fail );

function OK(){
  do something if request was ok.
}

function fail(){
  do something if request was not ok.
}
0
Amir Rezvani

Ronny Wangの答えは、私の問題を始めるのに良い場所を提供しました。しかし、彼の解決策は私にはうまくいきませんでした-jQueryテンプレートの本体にある..タグが、MVC3Razorビューページで問題を引き起こしていました。

幸い、私は、わずかな変更のみで機能するソリューション(詳細@ https://github.com/jquery/jquery-tmpl/issues/94 )に出くわしました。これがロニーの答えですが、MVC3互換にするための修正があります:

<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
    <!-- Some HTML here -->
    <scr{{= ""}}ipt type="text/javascript">
        <!-- Some javascript here -->
    </scr{{= ""}}ipt>
</script>

開始タグと終了タグの両方を分割する必要があるようです。お役に立てれば!

0
Mass Dot Net