如何使用 Meteor Blaze 和 Bootstrap 根据数据做不同的工具提示?

how to do different tooltips depending on data with Meteor Blaze and Bootstrap?

我正在使用 Meteor Blaze 和 Bootstrap 3 在鼠标悬停时显示带有工具提示的 img。它适用于静态工具提示文本:

<img class="socialMediaIcon" src={{iconPath}} data-toggle="tooltip"
     data-placement="right" title={{tooltip}} />

但我想根据集合文档字段的值动态更改工具提示。

我创建了一个模板助手来生成所需的文本:

Template.SocialMedia.helpers({
  getSocialMediaIconTooltip: function(service) {
    console.log(">>>>>> Tooltip service =", service);
    var smsdata = socialMediaSystem.findOne({service: service});
    if (!smsdata.active)
      return smsData.tooltip;
    else {
      var smudata = socialMediaUser.findOne({accountId: Meteor.user()._id, service: service});
      if (smudata)
        return "Disconnect " + smsData.tooltip;
      else
        return "Connect " + smsData.tooltip;
    }
  },

我用以下方式调用它:

<img class="socialMediaIcon" src={{iconPath}} data-toggle="tooltip"
     data-placement="right" title={{getSocialMediaIconTooltip name}} />

其中 "name" 是打开文档中的一个字段(代码在 {{#each}} 循环内)。 "name" 是非空的,稍后在#each 块中成功使用。 "getSocialMediaIconTooltip" 永远不会被调用,也不会出现工具提示。我在其他有效的地方使用了这个参数传递语法。我做错了什么?

助手可能会抛出错误,在 Blaze 模板中这意味着空白输出(即没有工具提示)。检查浏览器控制台是否有错误消息。

您的助手指的是 smsdatasmsData。这是正确的,还是 smsData 无效引用?

我的打字错误,请参阅上面的评论。更正代码供参考:

Template.SocialMedia.helpers({
  getSocialMediaIconTooltip: function(service) {
  try {
    const smsdata = socialMediaSystem.findOne({subname: service});
    if (smsdata.active == false)
      return smsdata.tooltip;
    else {
      const smudata = socialMediaUser.findOne({accountId: Meteor.user()._id, service: service});
      if (smudata)
        return "Disconnect " + smsdata.tooltip;
      else
        return "Connect " + smsdata.tooltip;
    }
  } catch(ex) {
    console.error(ex);
  }
  },