使用jsrender模板嵌入脚本

12
我想在我的jsrender模板中使用一个变量来生成一段javascript代码片段,但我无法弄清如何将<script type="text/javascript">放置在我的<script id="data-item-tpl" type="text/x-jsrender">中。希望以下内容比较清晰。下面的代码会产生一个Uncaught SyntaxError。如果我从嵌入式脚本中删除标签,则会简单地将其作为文本打印到页面上。在下面的代码中,我试图生成一个带有id“chartId”的div,然后使用MyChart对象通过脚本填充该div。
<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>
1个回答

13

我刚刚做了一些尝试,最终让它像这样工作:

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

也许不是最优雅的解决方案,但我在那里加入了一个alert,它就触发了。


1
没错!这就是每个编写Web代码的人经常不得不面对的代码质量。Web技术很糟糕。完结撒花! - user2173353
我在监视窗口中遇到了“太多非法字符”的错误。我无法使用它。 - Shesha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接