2017-01-01 3 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을 사용할 수있을 때 특급 경로에서 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을 사용할 수 있습니다.