在underscore.js模板脚本中实现所选选择下拉列表的问题

时间:2012-10-16 19:53:25

标签: jquery css select underscore.js jquery-chosen

在我的代码中,如果我删除了     <script type="text/html" class="template"> </script> 标记来自包含一些<select>标记的div部分,然后selected.jquery.js样式生效。

如果我保留<script>标签,则不会正确修改选择下拉列表,而是将其修改为某种操作链接。

继承人jsfiddle

如果删除标签以及对模板的下划线和jquery调用,则下拉列表将正确加载。

这是一个显示两种方式的图像:

enter image description here

我希望它看起来与底部选项类似,同时仍然使用下划线的模板。这可能吗?

1 个答案:

答案 0 :(得分:1)

当你说_.template(some_html)时,你会得到一个函数,而不是HTML:

  

模板 _.template(templateString, [data], [settings])

     

将JavaScript模板编译为可以评估渲染的函数   [...]
   如果您正在编写一次性文件,则可以将数据对象作为第二个参数传递给模板,以便立即呈现,而不是返回模板函数。

因此,您尝试在页面中添加一项功能,就好像它是一大堆HTML并且效果不佳。此外,您试图将模板放入文档<head>区域,这不是一个好主意。

您需要编译模板,然后运行您获取的功能以获取HTML:

var template = _.template(some_html);
var html     = template(); // Or template(data) if you have data.

如果您有模板的数据,可以一次性完成:

var html = _.template(some_html, data);

演示:http://jsfiddle.net/ambiguous/3ezqV/