使用 Blaze 在 Meteor 中有条件地将复选框标记为已选中

Conditionally mark a checkbox as checked in Meteor using Blaze

我不完全确定这里出了什么问题,或者我应该如何以不同的方式处理它 - 但谷歌搜索只是提出对 'isChecked' 的引用 - 我没有使用的东西。

我只想在相关字段值存在时将复选框标记为已选中:

<input type="checkbox" name="services.bananaExports" {{ #if currentUser.profile.services.bananaExports }} checked {{ /if }} />

但我得到:

Reactive HTML attributes must either have a constant name or consist of a single {{helper}} providing a dictionary of names and values. A template tag of type BLOCKOPEN is not allowed here.

老实说,我不确定它想告诉我什么,我是 meteor/blaze 的新手,但这是一个非常基本的 if 子句?我可以不在这里发出 if 语句吗?如果不是,我将如何处理?

我能想到的最好的解决方案是像这样定义一个助手:

Template.registerHelper('isTruthy', function(varName) {
  return !!varName;
});

那么你可以这样做:

{{#each foodList}}
  {{foodName}} <input type="checkbox" checked={{isTruthy eaten}}>
{{/each}}

当然,你的情况是:

<input type="checkbox" name="services.bananaExports" checked={{isTruthy currentUser.profile.services.bananaExports}}>