循环遍历数组时处理Handlebars数学表达式

3

我正在练习Node,遇到了一些问题。我使用handlebars作为模板引擎,mongoose用于与我的数据库交互。在我的.hbs模板中,我正在循环遍历来自数据库的每个记录,并且当然我将这些记录传递给了我的视图:

router.get('/', function(req, res, next) {
Exam.find(function(err, predmeti) {
if (err) {
  console.log(err);
}
  res.render('index',{
    predmeti: predmeti
  })
})

}); 

现在,当我通过 #each 循环遍历 predmeti 时,如果我尝试进行诸如数学表达式之类的操作,引擎会抛出错误。
{{#each predmeti}}
 <h1>{{100/(brKolokvijuma/finished)}}</h1>
{{/each}}

brKolokvijuma和finished都有一个数值,但是由于某种原因我得到了一个错误 Expecting ID got OPEN_SEXPR

所以我猜想当我循环遍历数组时,handlebars不允许我进行数学表达式。我该如何解决这个问题?

1个回答

11

有一些Handlebars插件可以让你在视图中做一些他们认为你不应该做的事情,但每个人仍然想要。

例如Assemble.io数学助手和嵌套表达式将使您能够执行以下操作:

{{#each predmeti}}
   <h1>{{divide 100 (divide brKolokvijuma finished)}}</h1>
{{/each}}

如果您的数学表达式不太复杂,并且在视图中重复使用(例如常见的计算如税收或四舍五入),则可以编写自己更简单/轻量级的插件:

Handlebars.registerHelper("divideMyThings", function(thing1, thing2, thing3) {
  return thing1 / thing2 / thing3;
});

在你的模板中调用:

{{divideMyThings 100 brKolokvijuma finished}}

第三,你可以经常预计算数据表,直到只剩下一个变量,然后使用内置查找功能。这不需要额外的插件。这对于这个具体问题可能没有帮助,但我想提一下它作为一个工具。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接