【问题标题】:Backbone underscore Checkbox passing value issue骨干下划线复选框传递值问题
【发布时间】:2012-10-12 19:09:03
【问题描述】:

我有一个非常基本的问题,但找不到解决方案。也许我需要改变我的思维方式。基本上我在 JSON 文件中得到了一个模型,但我不知道如何将true 转换为checked。例如,我知道{{-done}} 是true 或false。

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

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

任何帮助将不胜感激

【问题讨论】:

    标签: javascript backbone.js underscore.js interpolation


    【解决方案1】:

    您的问题是您使用了 错误 类型的 Underscore.js 模板标签,您使用的标签是用于插入一个值并将其 HTML 转义。

    解释一下,下划线templates内的标签有三种类型,

    1. &lt;%= %&gt; - 插值 - 评估属性的数据并打印出来。
    2. &lt;%- %&gt; Escape 评估数据并以 HTML 转义的形式打印出来。
    3. &lt;% %&gt; 评估允许您在模板中执行 JavaScript。

    此外,在模板中执行 JavaScript 时,您可以使用 Print 方法打印一些文本(例如属性的结果)。

    根据您的情况,如果 done 评估为 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。

    【讨论】:

    • 感谢您的回复,我已经使用
    • 很高兴为您提供帮助,您可以通过单击答案左侧的复选标记来接受答案。
    • 宾果游戏,你的明星。这完全取决于我的模板设置。我需要弄清楚为什么我的不正确。我的 html 代码可能一直在工作。再次感谢。
    【解决方案2】:

    我坚信我拥有它,但它总是进入第一个条件。这就是我所拥有的。正如你所看到的,我在下一行打印出 Done,它显示的是真还是假。你的代码是有道理的,只是不想打球。会不会是脚本声明的原因?

            <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> 
    

    【讨论】:

    • 我根据您刚刚发布的模板修改了我的答案,这表示您真的不应该将此作为新答案发布,因为它没有回答您的问题,而是您可以在答案下发表评论更多信息或编辑您的原始帖子以添加更多信息。要注意的另一件事是,如果 done 等于文本“false”,它仍然会评估为 true(在这种情况下您想要做的是使用 done == "true"。
    • 您应该考虑的另一件事是,当您对某人的回答发表评论时,他们会收到通知,但是当您像在此处那样发布新答案时,他们不会(我只是碰巧看到了这个) .
    • 嗨,杰克,您对如何使用本网站的看法已被记录。感谢那。虽然仍然没有运气。这是我的 json 文件 {"text":"w","done":false,"id":"ee7b750e-5450-974b-649c-98fb5bd3726c"} 。 so done 是一个真值或假值。奇怪的是,如果我在输入末尾的 /> 中留下它会显示这个。
    • 如果我使用 'checked="checked"' ,那么所有行都会显示。 'checked="checked"' 。它每次都达到真实状态。也许它会检查是否有一个值,如果有,那么它会命中它
    • 您是否指定了不同的样式分隔符?因为在您的范围内,您使用的是{{-}} 而不是&lt;%- %&gt;。除此之外,我用你的 json 和我指定的模板在本地对其进行了测试,它可以工作,如果你仍然不能让它工作,我会放一个 jsbin 或 jsfiddle。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多