如何使用EJS模板语言打破循环?

时间:2014-06-25 08:27:32

标签: javascript sails.js ejs

我正在使用sails.js开发一个简单的Web应用程序。

在我的前端代码中,我正在循环控制器发送的一组对象,我正在搜索特定的对象。一旦找到对象,我想打破循环。有没有一种干净的方法可以使用ejs模板语言?

我无法在EJS官方网站上找到任何相关信息,也无法在帆网站上找到任何相关信息。

我天真地试过这个:

<% objects.forEach(function(object)  { %>
    <% if(object.someId == someValue) {%>
        <%= object.name %>
        <% break %> <!-- This raise an illegal statement exception -->
    <% } %>
<% } %>

以下代码按预期工作,但我正在寻找更清晰的解决方案

<% var found = false %>
<% objects.forEach(function(object)  { %>
    <% if(object.someId == someValue && !found) {%>
        <%= object.name %>
        <% found = true %>
    <% } %>
<% } %>

1 个答案:

答案 0 :(得分:4)

这不是与EJS相关的问题。

break语句终止当前循环。虽然你不在循环中。你是回调函数,每个数组元素由forEach方法调用一次。无法中断forEach(参见How to short circuit Array.forEach like calling break?)。但是,如果您需要它,可以使用for循环来获得一个干净的解决方案:

<% for (var l = objects.length, i = 0; i < l; i++) { %>
    <% object = objects[i]%>
    <% if(object.someId == someValue) {%>
        <%= object.name %>
        <% break %> <!-- This will work as expected -->
    <% } %>
<% } %>