我正在使用Bootstrap自己的工具提示,这需要一些初始化。有人告诉我这样做:
Template.myTemplate.rendered = function() {
$('.tooltipped').tooltip()
}
然后,我可以通过添加类tooltipped
和一些data
-TAG来添加工具提示,在此字体上很棒的图标:
<i class="tooltipped fa fa-square" data-toggle="tooltip" data-placement="top" title="Whatever the tooltip should say"></i>
问题在于,这些图标在项目被动态添加时产生,并且有些东西使工具提示无法处理新鲜物品。它需要完整的页面重新加载才能使它们正常工作。
谷歌搜索我找到了两个假定的解决方案的问题,这些解决方案都无法正常工作。
第一个解决方案是将初始化代码包装在Meteor.defer()
函数中,我没有经验,甚至没有出现在官方文档中。
Template.myTemplate.rendered = function() {
Meteor.defer(function() {
$('.tooltipped').tooltip()
})
}
但是,这似乎没有做任何事情。
第二个解决方案根本不是真正的解决方案,而只是建议放弃Bootstrap的工具提示和安装 beackback:tooltips ,但这不是一个非常愉快的体验根本(复杂和非工作)。
所以我剩下的引导性和无反应性。有人知道如何使其正常工作吗?
,所以这不起作用...
<template name="myTemplate">
{{#each myTemplateItems}}
<i class="tooltipped fa fa-square" data-toggle="tooltip" data-placement="top" title="{{whateverTheTooltipShoudSay}}"></i>
{{/each}}
</template>
Template.myTemplate.onRendered(function() {
$('.tooltipped').tooltip()
})
当将项目添加到myTemplateItems
时,onRendered
回调不会触发。这是因为myTemplate
已经渲染了。
这应该有效:
<template name="myTemplate">
{{#each myTemplateItems}}
{{>myTemplateItem}}
{{/each}}
</template>
<template name="myTemplateItem">
<i class="tooltipped fa fa-square" data-toggle="tooltip" data-placement="top" title="{{whateverTheTooltipShoudSay}}"></i>
</template>
Template.myTemplateItem.onRendered(function() {
this.$('.tooltipped').tooltip();
})
当将新项目添加到myTemplateItems
时,创建了myTemplateItem
的新模板实例,您可以在。
onRendered
您可以简单地在title
属性中使用助手。例如,如果您使用默认应用流星在meteor create
中创建,则可以写:
<i class="tooltipped fa fa-square" data-toggle="tooltip" data-placement="top"
title="{{counter}}"> the text with the tooltip </i>
您将看到单击计数器按钮时工具提示的变化。这是使用Session
变量,这是反应数据源的完美示例。但是其他反应性数据源应该可以使用相同,例如,在集合上查询。
警告:我不知道如果用户用工具提示将项目悬停,即在这种情况下,工具提示可能不会更新,直到用户将鼠标移开然后再次悬停。
我使用的另一个解决方案是,当您的模板中的更改被按钮/事件触发时,您可以在事件处理程序中以编程方式销毁和重新定位工具提示。如果您具有基于数据中某些条件的不同工具提示/禁用设置的同一按钮的不同版本,则此功能非常有效。
您的模板:
{{#unless exceededCapacity}}
<a href="" id="addItemButton" class="add-item" data-toggle="tooltip" data-placement="top" title="" data-original-title="Click here to add items.">Add Item</a>
{{else}}
<a href="" id="addItemButton" class="add-item" data-toggle="tooltip" data-placement="top" title="" data-original-title="You cannot add any more items." disabled>Add Item</a>
{{/unless}}
然后您的事件代码:
'click .add-item': function(event) {
event.preventDefault();
// Destroy the tooltips
$('.add-item').tooltip('destroy');
// Code to do your work... e.g insert time
// Reinitialize tooltips - this could also be called in an insert callback upon success, etc.
$('.add-item').tooltip({trigger: 'hover'});
}