2017-01-01 5 views
0

私の目的の私が書くいくつかをしようとしているように、現在のリンク上のHTMLベースのデータを取得する: マイapp.js:はバーnodejsでヘルパー

Handlebars.registerHelper('if_eq', function(a, b, opts){       
    if(a == b) 
    return opts.fn(this); 
    else 
    return opts.inverse(this); 
}); 

Handlebars.registerHelper('cur', function(req, res) { 
    var s = ''; 
    s = req.path; 
    return s.slice(1); 
}); 

とHBS:

{{#if_eq url cur}} 
    {{this.title}} 
{{/if_eq}} 

しかし、動作しません。私は{{cur}}や 'cur'のように変更しようとしていました。何かが見当たりません。私は知らなかったし、一つのアクションのためにマルチハンドルヘルパーを組み合わせる方法もなかった。手伝ってくれてありがとう 。

答えて

0

Expressルートでハンドルバーのヘルパーを混乱させるようです。ヘルパーはreqresのパラメータを渡すことはありません。 reqresが利用可能な場合は、Expressルートでcur変数を作成し、それをハンドルバーテンプレートに渡してみてください。

const path = require('path'); 
const fs = require('fs'); 
const Handlebars = require('handlebars'); 
const express = require('express'); 
const app = new express(); 

// Define your helper here 

const source = fs.readFileSync(path.join(__dirname, 'page.hbs'), {encoding: 'utf8'}); 
const template = Handlebars.compile(source); 

app.get('/', function(req, res) { 
    const content = template({ 
     cur: req.path.slice(1), 
     url: 'http://example.com/some/url' 
    }); 
    res.send(template(content)); 
}); 

app.listen(3000); 

次に、curをハンドルバーテンプレートの通常の変数として使用できます。