我正在使用流星大火和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}} />
其中"名称"是打开文档中的一个字段(代码在{{#each}} loop内部(。"名称"是非蓝兰的,稍后在#EHT块中成功使用。" getocialmediaiconcontooltip"永远不会被调用,也没有出现工具提示。我已经在其他有效的地方使用了这个论点。我在做什么错?
助手可能会丢下错误,在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);
}
},