我有以下代碼: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