day*_*oli 28 meteor meteor-blaze
看看这个使用Blaze指南,看起来Blaze支持{{#if}}和{{else}}声明,但我还没有看到if-else语句的例子.Blaze是否支持此功能?或者我必须在else块中执行额外的if块,这可能会变得很难看.
我试过了{{else if}},但这给了一个错误.
{{#if en}}{{text.en}}{{else if tc}}{{text.tc}}{{/if}}
Run Code Online (Sandbox Code Playgroud)
Dav*_*don 57
Spacebars使用与把手相同的控制流结构,因此答案与此相同.在你的情况下:
{{#if en}}
{{text.en}}
{{else}}
{{#if tc}}
{{text.tc}}
{{/if}}
{{/if}}
Run Code Online (Sandbox Code Playgroud)
有时更好的选择是将逻辑移动到这样的帮助器:
Template.myTemplate.helpers({
textValue: function() {
if (this.en) {
return this.text.tc;
} else if (this.tc) {
return this.text.tc;
}
}
});
Run Code Online (Sandbox Code Playgroud)
<template name="myTemplate">
<p>{{textValue}}</p>
</template>
Run Code Online (Sandbox Code Playgroud)
小智 7
当前版本的 Blaze 支持 else if - 请参阅下面的示例格式和 github 问题解决方案的参考。
{{#if isUserProfile}}
<h3>User Profile</h3>
{{else if isLawyerProfile}}
<h3>Lawyer Profile</h3>
{{else}}
<h3>Test</h3>
{{/if}}
Run Code Online (Sandbox Code Playgroud)
参考链接:GitHub Else If 问题解决
继@David Wheldon 的出色回答之后,还值得注意的是,您可以将参数从 Blaze 模板传递给 JavaScript 辅助函数。
因此,例如,下面的代码通过使用以下行调用 helper 方法有选择地呈现选择列表的选项isSelected region customerCompany:
{{#if isSelected region customerCompany}}
<option value={{region._id}} selected>{{region.name}}</option>
{{else}}
<option value={{region._id}}>{{region.name}}</option>
{{/if}}
Run Code Online (Sandbox Code Playgroud)
然后在js文件中:
isSelected: function (region, customer) {
return customer.salesRegionId === region._id;
},
Run Code Online (Sandbox Code Playgroud)
通常建议使用这种将变量传递给助手的方法,以避免this在使用模板时因关键字含义的变化而引起的混淆。
| 归档时间: |
|
| 查看次数: |
34725 次 |
| 最近记录: |