我的BackboneJS模板中有以下代码(使用Underscore渲染)
<input type="radio" class="isMale" id="isMaleVolunteersNo"
<%= model.attributes.isMaleVolunteers == undefined ||
model.attributes.isMaleVolunteers == null ||
model.attributes.isMaleVolunteers == 'N' ? 'checked' : ''
%>
name="isMaleVolunteers" value="false" />
<label for="isMaleVolunteersNo" style="display:inline">No</label>
当模型属性isMaleVolunteers未定义时,我希望默认情况下检查No。
我尝试了以下(使用paranthesis)......仍然无效;
<input type="radio" class="isMale" id="isMaleVolunteersNo"
<%= (model.attributes.isMaleVolunteers == undefined ||
model.attributes.isMaleVolunteers == null ||
model.attributes.isMaleVolunteers == 'N') ? 'checked' : ''
%>
name="isMaleVolunteers" value="false" />
<label for="isMaleVolunteersNo" style="display:inline">No</label>
但上面的代码不起作用。代码有问题吗?
答案 0 :(得分:4)
在下划线模板中,使用<% %>
执行javascript代码。 <%= %>
用于插入变量(短打印变量)
因此,您的代码应该类似于<input type="radio" <%if(condition){print('checked');}%> >
答案 1 :(得分:0)
试试这个:
<input type="radio" class="isMale" id="isMaleVolunteersNo"
<%=
!model.attributes.isMaleVolunteers || model.attributes.isMaleVolunteers == 'N'
? 'checked'
: '' %>
name="isMaleVolunteers" value="false"
/>
<label for="isMaleVolunteersNo" style="display:inline">No</label>
答案 2 :(得分:0)
此外,由于你使用骨干模型,你不需要检查null或undefined,你可以只使用API方法model.has() - 所以在这种情况下代码可能看起来像这样
<input type="radio" <%= !!(model.has('isMaleVolunteersNo') && model.get('isMaleVolunteersNo') !== 'N') ? 'checked' : '' %> class="..." id="..." name="...">
根据经验,如果您必须手动访问model.attributes
,那么您做错了。此外,一个好的做法是在将模型运行到模板之前将模型转换为JSON,因为这样可以更轻松地处理数据。