Ogn*_*jen 1 javascript node.js express handlebars.js
我正在练习节点,我遇到了一个小问题。我使用把手作为模板引擎,使用猫鼬与我的数据库进行交互。在我的 .hbs 模板中,我循环遍历数据库中的每条记录,当然我将这些记录传递给我的视图
router.get('/', function(req, res, next) {
Exam.find(function(err, predmeti) {
if (err) {
console.log(err);
}
res.render('index',{
predmeti: predmeti
})
})
});
Run Code Online (Sandbox Code Playgroud)
现在,当我predmeti使用 #each循环时,当我尝试执行数学表达式时,引擎会抛出错误,例如
{{#each predmeti}}
<h1>{{100/(brKolokvijuma/finished)}}</h1>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
brKolokvijuma and finished两者都有一个数值,但由于某种原因,我收到一个错误Expecting ID got OPEN_SEXPR
所以我假设当我循环遍历数组时,把手不会让我做数学表达式。我该如何解决这个问题?
有一些 Handlebars 插件可以让你做他们认为你不应该在视图中做的事情,但每个人仍然想这样做。
例如,Assemble.io 数学助手和嵌套表达式将使您能够执行以下操作:
{{#each predmeti}}
<h1>{{divide 100 (divide brKolokvijuma finished)}}</h1>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
第二种方法,如果您的数学表达式不是那么多样化并且围绕您的视图重复使用(常见计算,例如税收或四舍五入),您可以编写自己的更简单/更轻巧的插件:
Handlebars.registerHelper("divideMyThings", function(thing1, thing2, thing3) {
return thing1 / thing2 / thing3;
});
Run Code Online (Sandbox Code Playgroud)
在您的模板中调用:
{{divideMyThings 100 brKolokvijuma finished}}
Run Code Online (Sandbox Code Playgroud)
第三,您通常可以预先计算数据表,直到只有一个变量,然后使用内置查找功能。这不需要额外的插件。这可能对这个特定问题没有帮助,但我想我会提到它作为一种工具。
| 归档时间: |
|
| 查看次数: |
12665 次 |
| 最近记录: |