2012-07-27 9 views
12

Chciałbym użyć zmiennej z mojego szablonu jsrender w celu wytworzenia fragment javascript, ale nie mogę dowiedzieć się, jak wykonać <script type="text/javascript"> w moim <script id="data-item-tpl" type="text/x-jsrender">Osadzanie skrypt z szablonem jsrender

Mam nadzieję, że poniżej jest dość jasne. Poniższy kod generuje numer . Jeśli usuniemy tagi z osadzonego skryptu, zostanie on po prostu wydrukowany na stronie jako tekst.

W poniższym kodzie próbuję wygenerować element div o identyfikatorze "chartId", a następnie skrypt, który wypełni ten element treścią za pomocą obiektu MyChart.

<script id="data-item-tpl" type="text/x-jsrender"> 
    <div class="item"> 
     <div class="graphs"> 
      <ul class="thumbnails"> 
       {{for graphs}} 
       <li><div class="thumbnail"><img src="{{html:url}}" width="190" height="120" /><p>{{html:graphTitle}}<br />{{html:value}}</p></div></li> 
       {{/for}} 
       <!-- Here we insert both the placeholder for, and the javascript to populate charts --> 
       <li><div id="{{html:chartId}}" style="width:120;height:190px;"></div></li> 
       <script type="text/javascript"> 
        var chartObj = new MyChart("{{html:chartId}}"); 
        chartObj.render(); 
       </script> 
      </ul>       
     </div> 
     ... 
</script> 

Odpowiedz

13

Właśnie robiłem trochę zabawy i był w stanie uzyskać to działa tak:

{{:"<scr" + "ipt type=&quot;text/javascript&quot;>"}} 
    var chartObj = new MyChart("{{html:chartId}}"); 
    chartObj.render(); 
{{:"</scr" + "ipt>"}} 

nie chyba najbardziej eleganckie rozwiązanie, ale kiedy położyć alert tam, to zwolniony.

+0

Trochę hacky, ale tak, to działa! Dzięki. – Ina

+1

Tak! Jest to rodzaj jakości kodu, który wszyscy, którzy piszą kod internetowy, muszą żyć dość często. Technologie sieciowe ssą. Kropka. Dzięki! – user2173353

+0

Otrzymuję komunikat "Zbyt wiele nielegalnych znaków" w oknie oglądania. Nie mogłem tego użyć. – Shesha