Rem*_*arp 7 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);
}
});
Run Code Online (Sandbox Code Playgroud)
并在模板中反复使用,如下所示:
{{feature request "some-feature"}} ... {{/feature}}
Run Code Online (Sandbox Code Playgroud)
我希望能够删除request
模板中的部分,因为它始终是相同的值,永远不会改变.所以,我想我可以绑定request
到feature
时,它的渲染,显然,每一次变化,我不希望它蔓延到其他请求.
就像是:
res.render("page", {
feature: hbs.helper.feature.bind(null, req)
});
Run Code Online (Sandbox Code Playgroud)
这可能吗?
如果您没有使用已知的帮助程序模式,那么帮助程序评估将检查上下文,以便您可以像上面那样传递一个绑定,它应该可以工作。
根据车把大师的最新代码,评估类似于:
helper = helpers.foo || (depth0 && depth0.foo) || helperMissing
helper.call(depth0, 1, {"name":"foo","hash":{},"data":data}
Run Code Online (Sandbox Code Playgroud)
其中深度0是当前上下文对象。这里需要注意的是,助手被赋予优先级,因此您需要以不同的方式命名它们。您还应该能够执行诸如{{./foo bar}}
优先考虑本地上下文版本之类的操作,但似乎我们有一个错误,在此特定语法构造下不支持这一点。
归档时间: |
|
查看次数: |
1019 次 |
最近记录: |