【问题标题】:How to "echo" a text in EJS (a javascript template) to check a radio button如何在 EJS(javascript 模板)中“回显”文本以检查单选按钮
【发布时间】:2018-03-18 15:00:24
【问题描述】:

我需要帮助 我正在使用 EJS javasript 模板编写代码 sn-p 两个检查单选按钮,具体取决于从服务器返回的数据。假设服务器返回一个 json(名为 my_data),这是我的代码

<input type="radio" name="is_public" value=1 <% if(my_data.is_public){ %> <%='checked' %> <% } %> />Public
<input type="radio" name="is_public" value=0 <% if(!my_data.is_public){ %> <%='checked' %> <% } %> />Private

但它不起作用!尽管 my_data.is_public = 0,但始终检查 Public。

有人可以帮忙吗?

顺便说一句,有没有办法在 EJS 中“回显”这样的文本:

<input type="radio" name="is_public" value=1 <% if(my_data.is_public){ echo 'checked' } %> />Public

【问题讨论】:

    标签: javascript radio-button ejs


    【解决方案1】:

    EJS 是一个简单易用的引擎,不需要在模板上投入太多的学习成本。如果你看看the source,你会发现一些有趣的东西。

    // the same as echo string
    __append(string)         
    

    所以:

    <input type="radio" name="is_public" value=1 <% if(my_data.is_public){ __append('checked') } %> />Public
    

    【讨论】:

    • 同意!当您需要在 ejs 代码中插入一些文本而不被 ejs 标签阻止时,它会很有用。所以JS代码变得更加清晰。非常感谢。
    【解决方案2】:

    从未使用过 EJS,但从其他模板引擎的经验来看,这应该可以:

    <input type="radio" name="is_public" value=1 <% if(my_data.is_public){ %> checked="checked" <% } %> />Public
    <input type="radio" name="is_public" value=0 <% if(!my_data.is_public){ %> checked="checked" <% } %> />Private
    

    当您说&lt;%= 时,您将输出随后的 JavaScript 评估结果。例如。 &lt;%= a %&gt;此时应该输出变量a的内容。

    模板中不需要显式回显 - 默认情况下应该回显&lt;% %&gt; 之外的任何内容,当然考虑到某些块是有条件地回显的,例如上面的if,或者在使用循环时可能会相乘等。

    【讨论】:

    • 我解决了。似乎 Javascript 不知道 1 为真,0 为假。因此,当我将 if 条件更改如下: if(my_data.is_public == 1) 代替 if(my_data.is_public) 和 if(my_data.is_public == 0) 代替 if(!my_data.is_public) 时,它仍然有效:D谢谢你的建议。当我删除 :D 后,我的代码现在更干净了
    • 很高兴为您提供帮助! Javascript 本身就是这样做的——请参阅这个 jsfiddle:jsfiddle.net/CdPbp。这可能是 EJS 特有的。无论如何,你发现的应该可以正常工作。
    • @LeoLerdorf ,这几乎适用于所有语言。实际的“布尔”假,实际上是 0、null、nil、{}、[] 或任何为空的东西(在 JS 中)。试试这个:console.log(10*false); 和 console.log(10*true); 你会明白的 ;)
    猜你喜欢
    • 2022-01-21
    • 2013-09-11
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多