有沒有辦法在{{#if}}語句中執行邏輯運算? 我希望這樣的事情:Blaze:{{#if}}語句中的邏輯(不,或,和...)
{{#if A && B}}
some html
{{/if}}
我找不到任何有關在大火邏輯文件,所以我想這是不支持的。我只是想確定。對不起,這個相當愚蠢的問題...
有沒有辦法在{{#if}}語句中執行邏輯運算? 我希望這樣的事情:Blaze:{{#if}}語句中的邏輯(不,或,和...)
{{#if A && B}}
some html
{{/if}}
我找不到任何有關在大火邏輯文件,所以我想這是不支持的。我只是想確定。對不起,這個相當愚蠢的問題...
正如比利·鮑伯·指出,你需要參數化的幫助器。以下是你可以在任何情況下使用兩個全球助手:
Template.registerHelper('and',(a,b)=>{
return a && b;
});
Template.registerHelper('or',(a,b)=>{
return a || b;
});
然後你可以用用這些:
{{#if and a b}}
a and b are both true-ish
{{/if}}
{{#if or a b}}
a or b is true-ish
{{/if}}
Spacebars旨在避免包括HTML中的邏輯操作。但這並不意味着你不能擁有一個:你需要使用助手。基本上,你有2個條件的情況下:
簡單{{#if something}}
和它的孿生{{#unless something}}
(把它理解爲「如果不是」)。這是你想要的,和你的助手會是什麼樣子,你用你的something
輔助參數,這種
Meteor.yourTemplate.helpers({
something : function() {
return A && B
}
});
更復雜{{#if something 'value'}}
:
Meteor.yourTemplate.helpers({
something : function (value) {
if (value === true){
return true
} else {
return false
}
});
這裏是我的版本:
Template.registerHelper("and", function() {
return Array.prototype.slice.call(arguments, 0, -1).filter(arg => arg == true).length == arguments.length - 1;
});
Template.registerHelper("or", function() {
return Array.prototype.slice.call(arguments, 0, -1).filter(arg => arg == true).length > 0;
});
現在,您可以用x參數來檢查,如:
{{#if and check_1 check_2 check3}}
您會注意到切片(0,-1),Blaze將更多參數添加到該函數中。
這是一個好主意 –