Blaze:{{#if}} 语句中的逻辑(Not、Or、And…)
Blaze: Logic (Not, Or, And…) in {{#if}} statement
有没有办法在{{#if}}语句中进行逻辑运算?
我希望是这样的:
{{#if A && B}}
some html
{{/if}}
我在 blaze 中找不到关于逻辑的文档,所以我猜它不被支持。我只是想确定一下。很抱歉这个愚蠢的问题...
空格键旨在避免在html中包含逻辑操作。但这并不意味着你不能拥有一个:你需要使用助手。基本上,您有 2 个条件情况:
简单的{{#if something}}
和它的双胞胎{{#unless something}}
(理解为"if not")。这就是你想要的,你的助手看起来像这样
Meteor.yourTemplate.helpers({
something : function () {
return A && B
}
});
更复杂的 {{#if something 'value'}}
为您的 something
助手使用参数:
Meteor.yourTemplate.helpers({
something : function (value) {
if (value === true){
return true
} else {
return false
}
});
正如 Billy Bob 所建议的,您需要参数化助手。以下是您可以在任何上下文中使用的两个全局助手:
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}}
这是我的版本:
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}}
您会注意到 slice(0,-1),Blaze 向该函数添加了一个参数。
有没有办法在{{#if}}语句中进行逻辑运算? 我希望是这样的:
{{#if A && B}}
some html
{{/if}}
我在 blaze 中找不到关于逻辑的文档,所以我猜它不被支持。我只是想确定一下。很抱歉这个愚蠢的问题...
空格键旨在避免在html中包含逻辑操作。但这并不意味着你不能拥有一个:你需要使用助手。基本上,您有 2 个条件情况:
简单的
{{#if something}}
和它的双胞胎{{#unless something}}
(理解为"if not")。这就是你想要的,你的助手看起来像这样Meteor.yourTemplate.helpers({ something : function () { return A && B } });
更复杂的
{{#if something 'value'}}
为您的something
助手使用参数:Meteor.yourTemplate.helpers({ something : function (value) { if (value === true){ return true } else { return false } });
正如 Billy Bob 所建议的,您需要参数化助手。以下是您可以在任何上下文中使用的两个全局助手:
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}}
这是我的版本:
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}}
您会注意到 slice(0,-1),Blaze 向该函数添加了一个参数。