簡體   English   中英

express-handlebars#if語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM