如何在EJS中防止多次打印?

时间:2019-02-21 03:11:08

标签: javascript node.js ejs

我创建了一个循环,用于从数据库中获取项目总数。我正在使用EJS,这是下面显示的代码。

       <h2>Summary</h2>
         <% if(typeof items.cart!=="undefined"){
           var amount = 0;  %>
         <% items.cart.forEach(function(file) {
                  amount +=parseInt(file.price); %>
           <ul class="summary-table" id="summary-table">
               <li><span>subtotal:</span> <span><%= amount %></span></li>
               <li><span>delivery:</span> <span>Free</span></li>
               <li><span>discount:</span> <span></span></li>
               <li><span>total:</span> <span><%= amount %></span></li>
           </ul>

           <% }); %>
        <%  } %>

我得到了物品的总数。但是,摘要会在价格加到总额中时多次打印。 enter image description here

防止它们出现的任何提示

1 个答案:

答案 0 :(得分:1)

您的<ul>标记似乎位于forEach循环中,因此将为items.cart的每个元素进行打印。 我建议您计算除模板之外的其他位置的总值,并且仅将模板用于渲染。

我不熟悉EJS,但是您可以尝试以下方法:

<h2>Summary</h2>
<% if (typeof items.cart !== "undefined") {
var amount = 0;  %>
    <% items.cart.forEach(function (file) {
    amount += parseInt(file.price); }); %>
        <ul class="summary-table" id="summary-table">
            <li><span>subtotal:</span> <span><%= amount %></span></li>
            <li><span>delivery:</span> <span>Free</span></li>
            <li><span>discount:</span> <span></span></li>
            <li><span>total:</span> <span><%= amount %></span></li>
        </ul>
<%  } %>