2012-07-27 10 views
12

Vorrei usare una variabile dal mio modello jsrender al fine di produrre un frammento di javascript, ma io non riesco a capire come posizionare un <script type="text/javascript"> nel mio <script id="data-item-tpl" type="text/x-jsrender">Incorporare uno script con un modello jsrender

Speriamo il sotto è abbastanza chiaro. Il codice seguente produce . Se rimuovo i tag dallo script incorporato, viene semplicemente stampato sulla pagina come testo.

Nel codice seguente, sto cercando di generare un div con id 'chartId', e quindi uno script che riempirà quel div con il contenuto, tramite l'oggetto 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> 

risposta

13

Ho appena fatto un po 'di suonare in giro ed è stato in grado di farlo funzionare in questo modo:

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

Forse non è la soluzione più elegante, ma quando ho messo un alert in là, sparato.

+0

Bit hacky ma, sì, funziona! Grazie. – Ina

+1

Sì! Questo è il tipo di qualità del codice che tutti quelli che scrivono codice web devono convivere abbastanza spesso. Le tecnologie Web fanno schifo. Periodo. Grazie! – user2173353

+0

Ricevo l'errore "Troppi caratteri non validi" nella finestra dell'orologio. Non potrei usarlo. – Shesha

Problemi correlati