如何使用 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 模板中这意味着空白输出(即没有工具提示)。检查浏览器控制台是否有错误消息。
您的助手指的是 smsdata
和 smsData
。这是正确的,还是 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);
}
},
我正在使用 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 模板中这意味着空白输出(即没有工具提示)。检查浏览器控制台是否有错误消息。
您的助手指的是 smsdata
和 smsData
。这是正确的,还是 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);
}
},