আপনি যদি গতিশীলভাবে টুলটিপগুলি বরাদ্দ করেন তবে এটি পড়ুন
অর্থাত্ <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) {
if ($(this).attr("title").length > 0) {
$( this ).attr("data-original-title", $(this).attr("title"));
}
});
$timeout(function() {
$(document).tooltip({ selector: '[data-toggle="tooltip"]'});
}, 500);
}, 1500);
সংক্ষেপে এখানে যা ঘটছে তা হ'ল:
- ডাইজেস্ট চক্রটি সম্পূর্ণ হওয়ার জন্য কিছু সময় (1500 এমএস) অপেক্ষা
titleকরতে হবে এবং এটি আপডেট করা হবে।
- যদি এমন কোনও
titleসম্পত্তি থাকে যা খালি নয় (যেমন এটি পরিবর্তিত হয়েছে), তবে এটি data-original-titleসম্পত্তিটিতে অনুলিপি করুন যাতে এটি বুটস্ট্র্যাপের সরঞ্জামদ্বারা গ্রহণ করবে।
- টুলটিপস পুনরায় সক্রিয় করুন
আশা করি এই দীর্ঘ উত্তরটি এমন কাউকে সহায়তা করবে যিনি আমার মতো লড়াই করছিলেন।