我试图在模板中分配值,想法是做这样的事情:
{{#if author}}
{{className = 'classA'}} <- trying to implement this line.
{{else}}
{{className = 'classB'}}
{{/if}}
<div class={{className}}></div>
Run Code Online (Sandbox Code Playgroud)
没有registerHelper可以这么做吗?
The*_*der 18
我需要以与原始海报预期相同的方式解决此解决方案.因此我创建了一个辅助函数来为我做这个.
function setVariable(varName, varValue, options){
options.data.root[varName] = varValue;
};
Run Code Online (Sandbox Code Playgroud)
包含在帮助程序中的选项中的是数据块,其中包含辅助变量的根.
我将变量放在根对象中,使用提供的值分配或覆盖.
html中的帮助器看起来很像这样.
{{setVariable "thisVar" "Contents Here"}}
<div>
{{thisVar}}
</div>
Run Code Online (Sandbox Code Playgroud)
PRS*_*PRS 14
你可以部分地做到这一点.
部分:
<div class="{{classname}}">{{var1.author}}</div>
Run Code Online (Sandbox Code Playgroud)
模板:
{{#if author}}
{{> mypartial var1=. classname="classA"}}
{{else}}
{{> mypartial var1=. classname="classB"}}
{{/if}}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我将当前范围作为var1传递.我不记得范围是否保持不变,只是添加了新变量,或者是否必须手动传递范围.
来自上述有用答案的小更新。在Handlebars 4.x中,似乎我们必须从@root获取变量。
handlebars.registerHelper('assign', function (varName, varValue, options) {
if (!options.data.root) {
options.data.root = {};
}
options.data.root[varName] = varValue;
});
Run Code Online (Sandbox Code Playgroud)
然后,
{{assign 'imageTag' 'drop-155'}}
{{@root.imageTag}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30557 次 |
| 最近记录: |