我有以下代码:spacebars:如何使用和/或if语句
<div class="form-group {{#if afFieldIsInvalid name='latitude' OR name='longitude'}}has-error{{/if}}">......</div>
我如何/或是否使用和spacebars模板条件是什么?
我有以下代码:spacebars:如何使用和/或if语句
<div class="form-group {{#if afFieldIsInvalid name='latitude' OR name='longitude'}}has-error{{/if}}">......</div>
我如何/或是否使用和spacebars模板条件是什么?
Spacebars是Handlebars的扩展,它被设计成一个无逻辑的模板语言。
解决方案是注册一个帮手。对于一般的情况下,看到这些类似的问题:
要在流星定义助手,使用Template.registerHelper
Spacebars无法处理逻辑表达式,所以您需要创建一个帮助程序来处理您的计算。
其实,你可以用嵌套IFS这样实现and
功能:
{{#if condition1}}
{{#if condition2}}
<p>Both condition hold!</p>
{{/if}}
{{/if}}
而且or
这样的:
{{#if condition1}}
<p>One of the conditions are true!</p>
{{else}}
{{#if condition2}}
<p>One of the conditions are true!</p>
{{/if}}
{{/if}}
但我宁愿使用帮手。
而不是使用'OR'尝试'||'。 或者在JavaScript文件中定义一个方法。
您有针对这种情况设计的扩展。
您可以使用一个 '与' 条件是这样的:
{{#if $in yourVariable 'case1' 'case2' }}
Your code Here
{{/if}}
以解决一步。这增加了比较运算符。
Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
switch (operator) {
case '==':
return (v1 == v2) ? options.fn(this) : options.inverse(this);
case '===':
return (v1 === v2) ? options.fn(this) : options.inverse(this);
case '!=':
return (v1 != v2) ? options.fn(this) : options.inverse(this);
case '!==':
return (v1 !== v2) ? options.fn(this) : options.inverse(this);
case '<':
return (v1 < v2) ? options.fn(this) : options.inverse(this);
case '<=':
return (v1 <= v2) ? options.fn(this) : options.inverse(this);
case '>':
return (v1 > v2) ? options.fn(this) : options.inverse(this);
case '>=':
return (v1 >= v2) ? options.fn(this) : options.inverse(this);
case '&&':
return (v1 && v2) ? options.fn(this) : options.inverse(this);
case '||':
return (v1 || v2) ? options.fn(this) : options.inverse(this);
default:
return options.inverse(this);
}
});
使用它在这样的模板:
{{#ifCond name='latitude' '||' name='longitude'}}
[Meteor.js把手模板逻辑运算符(的
可能重复http://stackoverflow.com/questions/17252750/meteor-js-车把-模板逻辑运算符) – 2015-02-10 08:16:40