2017-01-01 107 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

它看起来像你可能会混淆车把助手与快车路线。帮助者不会得到reqres参数传递给他们。尝试在Express路线中创建cur变量,当reqres可用时,然后将其传递给车把模板。

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作为普通变量。