希望得到一些帮助。
我想要实现的是基于条件打破内循环,以便我可以继续外循环。
这是否可以使用下划线。
像这样。
<% _.each(ApplicationTemplateFields, function(applicationTemplateField){%>
<% _.each(Validations, function(validation){%>
<% if(applicationTemplateField.UniqueKey == validation.UniqueKey) {%>
<div class="form-group has-error">
<label><%= applicationTemplateField.FieldName %></label>
<label class="control-label" for="inputError1"><%= validation.ValidationMessage %></label>
<input type="text" class="form-control inputs" id="inputError1">
</div>
<% break; %>
<%} else {%>
<div class="form-group">
<label><%= applicationTemplateField.FieldName %></label>
<input type="text" class="form-control inputs" id="input<%= applicationTemplateField.Id %>">
</div>
<% break; %>
<% } %>
<% }) %>
<% }) %>
答案 0 :(得分:1)
Underscore的each
文档指定:
It's also good to note that an each loop cannot be broken out of — to break, use _.find instead.
find
一旦返回true
就会中断,因此代码会变为:
<% _.each(ApplicationTemplateFields, function(applicationTemplateField){%>
<% _.find(Validations, function(validation){%>
<% if(applicationTemplateField.UniqueKey == validation.UniqueKey) {%>
<div class="form-group has-error">
<label><%= applicationTemplateField.FieldName %></label>
<label class="control-label" for="inputError1"><%= validation.ValidationMessage %></label>
<input type="text" class="form-control inputs" id="inputError1">
</div>
<% return true; %>
<%} else {%>
<div class="form-group">
<label><%= applicationTemplateField.FieldName %></label>
<input type="text" class="form-control inputs" id="input<%= applicationTemplateField.Id %>">
</div>
<% return true; %>
<% } %>
<% }) %>
<% }) %>
我注意到你内部循环中的所有代码都在if else
语句中,并且你想要破解。这意味着你的循环将在第一次迭代时总是中断,这使得它很大程度上是多余的,因为只有集合中的第一个项将被迭代。如果这是故意的,您可以完全避免内部循环并简化模板逻辑:
<% _.each(ApplicationTemplateFields, function(applicationTemplateField){%>
<% var validation = Validations[ 0 ]; %>
<% if(applicationTemplateField.UniqueKey == validation.UniqueKey) {%>
<div class="form-group has-error">
<label><%= applicationTemplateField.FieldName %></label>
<label class="control-label" for="inputError1"><%= validation.ValidationMessage %></label>
<input type="text" class="form-control inputs" id="inputError1">
</div>
<%} else {%>
<div class="form-group">
<label><%= applicationTemplateField.FieldName %></label>
<input type="text" class="form-control inputs" id="input<%= applicationTemplateField.Id %>">
</div>
<% } %>
<% }) %>