[英]express-handlebars # if statement
我對NodeJS仍然很陌生,並且正在使用express和express-handlebar軟件包。 但是,“如果陳述”無法正常運行,實際上根本無法正常工作。 我想這是因為我沒有為if語句使用模板。
僅使用包“ handlebars”,我就可以使用:
rs.readFile('files/test.hbs', 'utf-8', function(err, data)
{
var template = hbs.compile(data);
var result = template ({name: 'name', value1: 'value1', value2: 'value2'});
res.end (result);
...
}
此解決方案實際上有效。
但是,我已經在整個代碼中使用了express-handlebars,並且希望繼續使用它。 我得到以下代碼:
//I´ll receive value1 and value2 later either directly from my database or with the help of MQTT
var value1 = ' value1';
var value2 = 'value2';
var name = 'name';
var helpers={
value1:function(){return value1;},
value2:function(){return value2;},
name: function(){return name;}
}
router.get('/', function(req, res){
res.render('index', {helpers});
});
我的html代碼如下所示:
<div>
<h1> {{value1}} </h1>
<h2> {{value2}} </h2>
{{#if name}}
<h3> hello there! </h3>
{{/if}}
</div>
正確顯示了值1和值2。 '你好!' 不是,因為我認為它不是模板。 有誰知道我如何使代碼與Express-Handlebars一起工作?
我自己回答。 解決方案是:
router.get('/', function(req, res){
res.render('index', {
name,
helpers});
});
在server.js中添加
const isEqual = function(a, b, opts) {
if (a == b) {
return opts.fn(this)
} else {
return opts.inverse(this)
}
}
var hbs = require('hbs');
hbs.registerHelper('if_eq', isEqual);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.