Meteor模板,检查值是否等于字符串

7
这里是模板结构。
{{#each loadedEvents}}
  {{#if future}}
    {{#if timezone="Europe/Warsaw"}}
    {{> event}}
  {{/if}}
{{/each}}

能否只查看具有特定值的项目?第二个问题是,如何结合两个语句:

{{#if future}} {{#if timezone="Europe/Warsaw"}}
2个回答

9
使用Template.registerHelper创建全局助手函数。例如,创建一个比较两个任意变量的助手函数:
Template.registerHelper('compare', function(v1, v2) {
  if (typeof v1 === 'object' && typeof v2 === 'object') {
    return _.isEqual(v1, v2); // do a object comparison
  } else {
    return v1 === v2;
  }
});

然后使用以下方式使用它:

{{#if compare timezone "Europe/Warsaw"}}
     // Do something
{{/if}}

9
您可以创建一个专用的工具来检查时区是否等于某个值:
Template.loadedEvents.helpers({
  timezoneIs: function(timezone){
    return this.timezone == timezone;
  }
});

如果您想要组合两个Spacebars {{#if}} 块帮助程序,请再次创建一个专用的帮助程序,在JS中执行测试:

JS

Template.loadedEvents.helpers({
  isFutureAndTimezoneIs: function(timezone){
    return this.future && this.timezone == timezone;
  }
});

HTML

{{#each loadedEvents}}
  {{#if isFutureAndTimezoneIs "Europe/Warsaw"}}
    {{> event}}
  {{/if}}
{{/each}}

谢谢,我已经将条件移入辅助代码中,并使用#if和#unless区分结果 :) - Dariusz Sikorski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接