JADE中的乘法

时间:2015-05-21 15:59:40

标签: node.js pug

如果有可能,将Jade中的两个字段相乘会很好。以下是我想要完成的事情:

tbody
 each item in items
  tr
   td #{item.sku}
   td.text-center #{item.price}
   td.text-center #{item.quantity}
   //td #{item.quantity} * #{item.price}
   // - var totals = {item.price} * {item.quantity};
   //td #{totals}
   td #{item.quantity} * #{item.price}

尝试了不同的方法,没有人工作。

2 个答案:

答案 0 :(得分:4)

我相信这就是你要找的东西:

tbody
  each item in items
    tr
      td #{item.sku}
      td.text-center #{item.price}
      td.text-center #{item.quantity}
      td.text-right= item.quantity*item.price
      // - var totalPrice = item.quantity*item.price
      // td.text-right #{totalPrice}
      // td.text-right #{item.quantity * item.price}
      // All three of the above methods work to do what you want to do

有两种方法可以将javascript包含到您的jade模板中,如here所述。

答案 1 :(得分:1)

您可以将乘法函数定义为jade locals的一部分。如果您使用的是快递,则可以使用app.locals这样的整个应用提供此功能:

<强> app.js:

app.locals.multiply = function(a, b) {
    return a * b;
};

玉石模板

tbody
 each item in items
  tr
   td #{item.sku}
   td.text-center #{item.price}
   td.text-center #{item.quantity}
   //td #{item.quantity} * #{item.price}
   // - var totals = {item.price} * {item.quantity};
   //td #{totals}
   td #{multiply(item.quantity, item.price)}

或仅限玉石:

var helpers = {
    multiply: function(a, b) {
        return a * b;
    }
}

var fn = jade.compile('string of jade', options);
var html = fn(_.extend(yourModel, helpers));
不,你可能不应该在模板中加入这么多逻辑。计算总计等任务可能属于模型对象。这样做允许您在其他视图中重用它并针对它编写单元测试。