查看此Using Blaze指南,Blaze似乎支持{{#if}}
和{{else}}
语句,但我没有看到if-else语句的示例。 Blaze是否支持此功能?或者我必须在else块中做一个额外的if块,这可能会变得难看。
我尝试了{{else if}}
,但这给出了错误。
{{#if en}}{{text.en}}{{else if tc}}{{text.tc}}{{/if}}
答案 0 :(得分:54)
Spacebars使用与handlebars相同的控制流结构,因此答案与this one相同。在你的情况下:
{{#if en}}
{{text.en}}
{{else}}
{{#if tc}}
{{text.tc}}
{{/if}}
{{/if}}
附注 - jade的一个好处是它支持else if
。
有时候更好的选择是将逻辑转移到这样的帮手:
Template.myTemplate.helpers({
textValue: function() {
if (this.en) {
return this.text.tc;
} else if (this.tc) {
return this.text.tc;
}
}
});
<template name="myTemplate">
<p>{{textValue}}</p>
</template>
答案 1 :(得分:4)
继来自@David Wheldon的优秀答案之后,还值得注意的是,您可以从Blaze模板将参数传递给JavaScript帮助函数。
因此,例如,下面的代码通过使用行isSelected region customerCompany
调用helper方法有选择地呈现选择列表的选项:
{{#if isSelected region customerCompany}}
<option value={{region._id}} selected>{{region.name}}</option>
{{else}}
<option value={{region._id}}>{{region.name}}</option>
{{/if}}
然后在js文件中:
isSelected: function (region, customer) {
return customer.salesRegionId === region._id;
},
通常建议使用这种将变量传递给助手的方法,以避免在使用模板时this
关键字的含义发生变化时产生的混淆。
答案 2 :(得分:1)
当前版本的Blaze支持其他if - 请参阅下面的示例格式并参考github问题解决方案。
{{#if isUserProfile}}
<h3>User Profile</h3>
{{else if isLawyerProfile}}
<h3>Lawyer Profile</h3>
{{else}}
<h3>Test</h3>
{{/if}}