2017-01-13 8 views
0

私はNodeJSにまだまだ慣れていません。エクスプレスハンドルとエクスプレスハンドルバーのパッケージを使用しています。 しかし、 'if-statement'は実際にはまったく正しく動作しません。私は、この理由は、if文のテンプレートを使用していないということです。ただパッケージ 'ハンドル' を使用してexpress-handlebars#ifステートメント

、私は行くだろう:

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

このソリューションは、実際に動作します。

しかし、コード全体ですでにエクスプレスハンドルバーを使用していて、使い続けたいと思っています。私は、コードを次のようだ:

//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> 

value1と値2が正しく表示されます。 'こんにちは!'私はテンプレートではないとは思わない。 エクスプレスハンドルバーでコードを動作させる方法を知っている人はいますか?

答えて

0

私はちょうど自分でそれに答えました。 解決策は次のとおりです。

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