我有一个非常基本的问题,但看不到它的解决方案。也许我需要改变自己的思维方式。基本上我在JSON文件中得到一个模型,但我无法弄清楚如何将true
转换为checked
。例如,我知道{{-done}}
是true
或false
。
input type="checkbox" id="chkName" <%= {{-done}} ? "checked" : "" %>
我看到很多像这样的例子,但对我来说不起作用。是因为我带回了真/假值的方式。
任何帮助将不胜感激
答案 0 :(得分:13)
您的问题是您使用的是错误的类型的Underscore.js模板标记,您正在使用的标记用于插值并让其进行HTML转义。
要解释一下,下划线templates中有三种类型标签,
<%= %>
- Interpolate - 评估媒体资源的数据并进行打印。<%- %>
退出评估数据并将其打印为HTML转义。<% %>
评估允许您在模板中执行JavaScript。此外,在模板中执行JavaScript时,您可以使用Print
方法打印出一些文本(例如属性的结果)。
根据上述情况,您需要在模板中运行条件,以便在完成评估为true时打印出已检查。你可以做的事情就像下面的
<% if(done) { %> 'checked="checked" <% } %>
或者您可以使用print
方法
<% print(done ? 'checked="checked"' : '') %>
编辑:
根据您发布的模板,以下模板应该可以使用
<script id="item-template" type="text/template">
<input type="checkbox" id="toggle" <% print( done ? 'checked="checked"' : '') %> />
<span class="text">{{-done}}</span>
<a id="dele" data-role="button" data-inline="true" data-icon='delete' >Delete</a>
</script>
以下是使用默认ERB样式分隔符
的jsBin链接这是一个使用胡子样式分隔符的second one。
答案 1 :(得分:0)
我想我拥有它,但它总是进入第一个条件。这就是我所拥有的。你可以看到我在下一行打印出Done,显示为true或false。你的代码很有意义,只是不想玩球。是否由于脚本声明?
<div id="items">
<script id="item-template" type="text/template">
<input type="checkbox" id="toggle" <% print( done ? '' : checked) %>
<span class="text">{{-done}}</span>
<a id="dele" data-role="button" data-inline="true" data-icon='delete' >Delete</a>
</script>
</div>