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

Похоже, что вы можете ввести в заблуждение помощников руля с экспресс-маршрутами. Помощники не получают req и res переданные им параметры. Попробуйте создать переменную cur в экспресс-маршруте, когда доступны req и res, а затем передайте это шаблону ручек.

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 как обычную переменную в шаблоне руле.

 Смежные вопросы

  • Нет связанных вопросов^_^