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

Dar*_*ski 7 javascript templates if-statement meteor

这是模板结构

{{#each loadedEvents}}
  {{#if future}}
    {{#if timezone="Europe/Warsaw"}}
    {{> event}}
  {{/if}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)

是否可以仅查看具有给定值的项目?第二个问题,如何结合这两个陈述:

{{#if future}} {{#if timezone="Europe/Warsaw"}}
Run Code Online (Sandbox Code Playgroud)

Adn*_*n Y 8

使用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;
  }
});
Run Code Online (Sandbox Code Playgroud)

然后使用它:

{{#if compare timezone "Europe/Warsaw"}}
     // Do something
{{/if}}
Run Code Online (Sandbox Code Playgroud)


sai*_*unt 8

您可以创建专用帮助程序来检查时区是否等于某个值:

Template.loadedEvents.helpers({
  timezoneIs: function(timezone){
    return this.timezone == timezone;
  }
});
Run Code Online (Sandbox Code Playgroud)

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

JS

Template.loadedEvents.helpers({
  isFutureAndTimezoneIs: function(timezone){
    return this.future && this.timezone == timezone;
  }
});
Run Code Online (Sandbox Code Playgroud)

HTML

{{#each loadedEvents}}
  {{#if isFutureAndTimezoneIs "Europe/Warsaw"}}
    {{> event}}
  {{/if}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)