Backbone下划线Checkbox传递值问题

时间:2012-10-22 21:54:02

标签: javascript backbone.js underscore.js interpolation

我有一个非常基本的问题,但看不到它的解决方案。也许我需要改变自己的思维方式。基本上我在JSON文件中得到一个模型,但我无法弄清楚如何将true转换为checked。例如,我知道{{-done}}truefalse

input type="checkbox"  id="chkName"   <%= {{-done}} ? "checked" : "" %>

我看到很多像这样的例子,但对我来说不起作用。是因为我带回了真/假值的方式。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:13)

您的问题是您使用的是错误的类型的Underscore.js模板标记,您正在使用的标记用于插值并让其进行HTML转义。

要解释一下,下划线templates中有三种类型标签,

  1. <%= %> - Interpolate - 评估媒体资源的数据并进行打印。
  2. <%- %> 退出评估数据并将其打印为HTML转义。
  3. <% %> 评估允许您在模板中执行JavaScript。
  4. 此外,在模板中执行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>