JADE 中的乘法

Multiplication in JADE

如果可能的话,最好在 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}

尝试了不同的方法,目前没有一个有效。

您可以将乘法函数定义为 jade locals 的一部分。如果您使用的是 express,则可以使用 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));

不,您可能不应该在模板中放置这么多逻辑。计算总数等任务可能属于模型对象。这样做允许您在其他视图中重用它并针对它编写单元测试。

我相信这就是您要找的:

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 所述。