我正在尝试为Handlebars.js编写一个条件if语句帮助器。从本质上讲,我想把一个"活跃的"如果是Apply Now
页面,则链接上的类。
助手:
Handlebars.registerHelper('isApplyNow', function(block) {
if(this.title == "Apply Now") {
return block(this);
} else {
return block.inverse(this);
}
});
和模板:
<ul>
{{#each pages}}
<li>
{{#isApplyNow}}
<a href="{{url}}" class ='active'>{{this.title}}</a>
{{else}}
<a href="{{url}}">{{this.title}}</a>
{{/if}}
</li>
{{/each}}
</ul>
但是,我收到了一个非常简单的javascript错误:
Uncaught [object Object] in handlebars-1.0.0.beta.2.js:595
任何人都可以看到我写这个不正确吗?
谢谢!
参考文章:
Calling Helper Within If Block in Handlebars Template
http://thinkvitamin.com/code/handlebars-js-part-2-partials-and-helpers/
答案 0 :(得分:20)
我确实看到一个轻微的语法错误,我认为这可能是个问题。如果您打算使用一个带有块的帮助器,那么您必须使用帮助器名称将其关闭。了解我如何将{{/if}}
替换为{{/isApplyNow}}
,如下所示:
{{#isApplyNow}}
<a href="{{url}}" class ='active'>{{this.title}}</a>
{{else}}
<a href="{{url}}">{{this.title}}</a>
{{/isApplyNow}}
答案 1 :(得分:1)
注意: 帮助器中的块(this)将不再起作用。相反,使用block.fn(this)
e.g。
Handlebars.registerHelper('isApplyNow', function(block) {
if (this.title === "Apply Now")
return block.fn(this);
else
return block.inverse(this);
});