Имам помощник, наречен функция, която изглежда така:
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 буболечка където това не се спазва при този конкретен синтаксисен конструкт.