express-handlebars #if语句

时间:2017-01-13 11:20:23

标签: javascript node.js

我仍然是NodeJS的新手,我正在使用快递和快递车把套件。 但是,'if-statement'无法正常工作,实际上根本没有。我想这是因为我没有为if语句使用模板。

只使用包'把手',我会选择:

while 1:
    x=str(ser.readline())
    x = re.findall("\d+\.\d+", x)
    x = float(x[0])
    print(x)

此解决方案实际上有效。

但是,我已经在整个代码中使用了快速把手,并希望继续使用它。我得到了以下代码:

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);
...
}

我的html代码如下所示:

//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});
         });

value1和value 2正确显示。 '你好!'不是因为我认为它不是模板。 有谁知道如何使代码与快递把手一起使用?

2 个答案:

答案 0 :(得分:0)

我刚才自己回答了。 解决方案是:

      router.get('/', function(req, res){
      res.render('index', {
         name,
         helpers});
     });

答案 1 :(得分:0)

将此添加到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);