仅当您动态分配工具提示时才阅读此内容
IE<div tooltip={{ obj.somePropertyThatMayChange }} ...></div>
我遇到了动态工具提示的问题,它并不总是随视图更新。例如,我正在做这样的事情:
这并没有始终如一地工作
<div ng-repeat="person in people">
<span data-toggle="tooltip" data-placement="top" title="{{ person.tooltip }}">
{{ person.name }}
</span>
</div>
并像这样激活它:
$timeout(function() {
$(document).tooltip({ selector: '[data-toggle="tooltip"]'});
}, 1500)
但是,由于我的人员数组会改变我的工具提示不会总是更新。我尝试了这个线程中的每一个修复,其他的都没有运气。故障似乎只发生在 5% 左右的时间,而且几乎不可能重复。
不幸的是,这些工具提示对我的项目至关重要,显示不正确的工具提示可能会非常糟糕。
似乎是什么问题
Bootstrap 将属性的值复制title
到一个新属性,并在我激活工具提示时data-original-title
删除该属性(有时)。title
但是,当 mytitle={{ person.tooltip }}
更改时,新值并不总是更新到 propertydata-original-title
中。我尝试停用工具提示并重新激活它们,销毁它们,直接绑定到这个属性......一切。但是,这些方法中的每一个都不起作用或产生了新问题;例如从我的对象中删除和解除绑定的title
and属性。data-original-title
什么起作用了
也许是我推送过的最丑陋的代码,但它为我解决了这个小而重要的问题。每次使用新数据更新工具提示时,我都会运行此代码:
$timeout(function() {
$('[data-toggle="tooltip"]').each(function(index) {
// sometimes the title is blank for no apparent reason. don't override in these cases.
if ($(this).attr("title").length > 0) {
$( this ).attr("data-original-title", $(this).attr("title"));
}
});
$timeout(function() {
// finally, activate the tooltips
$(document).tooltip({ selector: '[data-toggle="tooltip"]'});
}, 500);
}, 1500);
这里发生的实质是:
- 等待一段时间(1500 毫秒)让摘要周期完成,并
title
更新 s。
- 如果有一个
title
不为空的属性(即它已更改),请将其复制到该data-original-title
属性中,以便 Bootstrap 的工具栏将其拾取。
- 重新激活工具提示
希望这个长长的答案可以帮助那些可能像我一样挣扎的人。