【问题标题】:Blaze: Logic (Not, Or, And…) in {{#if}} statementBlaze:{{#if}} 语句中的逻辑(非、或、与……)
【发布时间】:2016-07-29 17:12:22
【问题描述】:

有没有办法在 {{#if}} 语句中进行逻辑运算? 我希望得到类似的东西:

{{#if A && B}}
  some html
{{/if}}

我在 blaze 中找不到有关逻辑的文档,所以我猜它不受支持。我只是想确定一下。对不起,这个相当愚蠢的问题......

【问题讨论】:

    标签: meteor meteor-blaze


    【解决方案1】:

    正如 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}}
    

    【讨论】:

      【解决方案2】:

      空格键旨在避免在 html 中包含逻辑操作。但这并不意味着你不能拥有一个:你需要使用助手。基本上,您有 2 个条件案例:

      • 简单的{{#if something}} 和它的孪生{{#unless something}}(理解为“如果不是”)。这就是你想要的,你的助手看起来像这样

        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
              }
          });
        

      【讨论】:

        【解决方案3】:

        这是我的版本:

        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 向函数添加了一个参数。

        【讨论】:

          猜你喜欢
          • 2017-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-15
          • 1970-01-01
          • 1970-01-01
          • 2018-07-15
          • 1970-01-01
          相关资源
          最近更新 更多