2014-06-25 69 views
0

我正在用sails.js開發一個簡單的Web應用程序。如何使用EJS模板語言打破循環?

在我的前端代碼中,我正在循環控制器發送的對象數組,並且我正在搜索特定的對象。一旦找到對象,我想打破循環。有沒有一種乾淨的方式來使用ejs模板語言來做到這一點?

我沒有在EJS官方網站上找到任何有關它的信息,也沒有在sails網站上找到它。

我天真地想這到現在爲止:

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

回答

3

這不是一個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 --> 
    <% } %> 
<% } %>