2

次のように、追加のパラメーターを必要とせずに、テンプレートが配置されたファイルのベース名を単純にレンダリングするヘルパーを作成する方法を探しています{{ basename }}

言い換えると、このヘルパーを 2 つのパーシャル (たとえばheader.hbsと) 内で使用した場合navbar.hbs、各パーシャルの名前が、使用された場所に出力でレンダリングされることが期待されます。

私は何時間も探しましたが、これに対する答えが見つかりません。任意の指示またはガイダンスをいただければ幸いです。

4

2 に答える 2

1

ここでのセットアップについてよく知らなくても、アプローチがあります。

render 関数内にヘルパーを登録する必要があります。次に、コンパイルの代わりに render を呼び出します。以下はバックエンド用ですが、環境に簡単に適応させることができます。

Handlebars には環境の概念がないため、どこかにグローバルに設定する必要があります。

exports.render = function (name, req, context) {
    if (isBrowser()) {
        throw new Error('Render cannot be called client-side.');
    }
    handlebars.registerHelper('basename', function() {
        var host = globalBasenameSetFromEnvironment;
        return  host;
    });
    if (!handlebars.templates[name]) {
        throw new Error('Template Not Found: ' + name);
    }
    return handlebars.templates[name](context);
};
于 2013-03-27T00:45:42.330 に答える