【问题标题】:How to compare two variables in meteor HTML如何比较流星HTML中的两个变量
【发布时间】:2015-05-20 03:26:36
【问题描述】:

我想将数据库值与 DATATYPE=['Text','Boolean,'Number'] 进行比较

这两种方法都试过了

方法一:https://github.com/raix/Meteor-handlebar-helpers

{#each variant}}
            <li>
         {{#each VARIENTS}}
               {{this.NAME}}
               {{this.DATATYPE}}

           {{#if $eq {{this.DATATYPE}} "Text"}}
  Show this text
 {{/if}}

           {{/each}}
            </li>
           {{/each}}

不工作 方法二:JS文件:

 Handlebars.registerHelper('compare', function(var1, var2) {
      return var1 === var2;
    });
Not working

【问题讨论】:

  • 您可以通过Template.registerHelper("compare", function(var1, var2) {})注册全局助手。你用的是哪个流星版本?

标签: javascript html meteor


【解决方案1】:

由于您想将数组与值进行比较,您应该在已注册的帮助程序中创建一些循环 - 显然您无法将数组与字符串匹配。 在 html 中应该是这样的

{{#if compare this.DATATYPE 'value'}}

我假设你想多次使用它,如果不只是创建常规帮助器

编辑

哦,如果 VARIENTS 是数组,那么你的助手没问题,你只是在不同的上下文中使用了 DATATYPE 变量

如果您删除 {{this.DATATYPE}} 中的胡须,您的第一个示例也应该有效

【讨论】:

  • {{#if compare this.DATATYPE 'Text'}}

    是的,它是文本

    {{/if}}
【解决方案2】:

处理和逻辑不应该在 html 中完成! 在帮助器中执行此操作并返回一个集合。

Template.body.helpers({
    VARIENTS2: function() { 
    var x = Varients.find({}, { sort: { rank: -1}}); };
    var y = [];
    var type;
    switch(this.DATATYPE) {
        case "text": type = "t"; break;
        case "boolean": type = "b"; break;
        case "value": type = "blah"; break;
    }
    y.push(type);
    return y;
});

【讨论】:

  • 逻辑不在 HTML 中,它是带参数的助手
猜你喜欢
  • 1970-01-01
  • 2019-10-27
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
相关资源
最近更新 更多