Прочитайте це, лише якщо ви призначаєте підказки динамічно
тобто <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
видаляв властивість (іноді), коли я активував занадто підказки. Однак, коли я title={{ person.tooltip }}
міняв би нове значення, не завжди було б оновлено властивість data-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.
- Повторно активуйте підказки
Сподіваюся, ця довга відповідь допоможе людині, яка, можливо, боролася, як і я.