/ / Възможно ли е да се "обвърже" помощник на кормилото преди рендера? (използвайки express & hbs) - express, handlebars.js

Възможно ли е да се "свърже" помощник на кормилото преди да се направи? (използвайки експресията & hbs) - express, handlebars.js

Имам помощник, наречен функция, която изглежда така:

hbs.registerHelper("feature", function(request, flag, options) {
if (features(flag, request)) {
return options.fn(this);
} else if (options.inverse) {
return options.inverse(this);
}
});

И отново се използва в шаблона по следния начин:

{{feature request "some-feature"}} ... {{/feature}}

Аз бих искал да мога да премахна request част от шаблона, тъй като винаги е една и съща стойност и никога не се променя request да се feature когато се "издава" и очевидно се променя всеки път и не искам да се излива в друга заявка.

Нещо като:

res.render("page", {
feature: hbs.helper.feature.bind(null, req)
});

Възможно ли е това?

Отговори:

2 за отговор № 1

Ако не използвате познатия режим на помощниците, тогава помощната оценка ще провери контекста, така че можете да преминете в обвързване, както сте имали по-горе и то трябва да работи.

Под последния код в кормилото магистър eval е нещо като:

helper = helpers.foo || (depth0 && depth0.foo) || helperMissing
helper.call(depth0, 1, {"name":"foo","hash":{},"data":data}

Където depth0 е обектът на текущия контекст. Уговорката тук е, че на помощниците се дава приоритет, така че трябва да ги назовете различно. Също така трябва да можете да направите нещо подобно {{./foo bar}} да дадем приоритет на версията на локалния контекст, но изглежда, че имаме a буболечка където това не се спазва при този конкретен синтаксисен конструкт.