यदि आप टूलटिप्स को गतिशील रूप से असाइन कर रहे हैं तो केवल इसे पढ़ें
अर्थात <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% समय के आसपास हो रही थी, और इसे दोहराना लगभग असंभव था।
दुर्भाग्य से, ये टूलटिप्स मेरी परियोजना के लिए महत्वपूर्ण हैं, और गलत टूलटिप दिखाना बहुत बुरा हो सकता है।
क्या मुद्दा लग रहा था
बूटस्ट्रैप titleएक नई विशेषता के लिए संपत्ति के मूल्य की प्रतिलिपि बना रहा था , data-original-titleऔर titleजब मैं टोलटिप्स को सक्रिय करूंगा तो संपत्ति (कभी-कभी) को हटा देगा। हालाँकि, जब मेरा title={{ person.tooltip }}नया मूल्य बदलेगा तो हमेशा संपत्ति में अपडेट नहीं किया जाएगा data-original-title। मैंने टूलटिप्स को निष्क्रिय करने और उन्हें पुन: सक्रिय करने की कोशिश की, उन्हें नष्ट कर दिया, सीधे इस संपत्ति के लिए बाध्य किया ... सब कुछ। हालाँकि इनमें से प्रत्येक ने या तो काम नहीं किया या नए मुद्दे बनाए; जैसे कि titleऔर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 अपडेट होने के लिए।
- यदि कोई ऐसी
titleसंपत्ति है जो खाली नहीं है (यानी वह बदल गई है), data-original-titleतो उसे संपत्ति में कॉपी करें ताकि वह बूटस्ट्रैप के टूलिप्स द्वारा उठाया जाएगा।
- टूलटिप्स को पुन: सक्रिय करें
आशा है कि यह लंबा जवाब किसी ऐसे व्यक्ति की मदद करता है जो शायद संघर्ष कर रहा था जैसा कि मैं था।