Laravel Livewire:Bootstrap 工具提示在 Livewire 验证后不显示
Laravel Livewire: Bootstrap Tooltip doesn't show up after livewire validation
我最近发现我的 bootstrap 5 个工具提示在我使用 livewire 验证或执行任何特定任务后停止工作。
每当 livewire 将数据发送到服务器以验证或更改某些内容时,我的工具提示就会像普通的标题标签一样出现。
验证前:
验证后:
[
Blade HTML:
<abbr data-bs-toggle="tooltip"
data-bs-placement="left"
data-bs-html="true"
title="{!! trans('mmhg_fullform') !!}">
{!! trans('mmhg') !!}
</abbr>
不太清楚为什么会这样,我在js中也有代码
$('[data-bs-toggle="tooltip"]').tooltip();
我们是否必须在任何地方进行某些更改才能在 livewire 组件中使用 bootstrap 工具提示?
试试这个,保持水分 blade re-render...我没有测试过,只是尝试一下。
在 blade 脚本部分
window.livewire.on('tooltipHydrate', () => {
$('[data-bs-toggle="tooltip"]').tooltip();
});
在组件中
public function hydrate()
{
$this->emit('tooltipHydrate');
}
我在这里发布的另一个答案有问题,似乎只是再次调用 .tooltip()
与 Livewire 不一致,我怀疑是由于 DOM 差异问题。
这是我找到的解决方案:
为Bootstrap4
$(document).ready(function() {
// ...
// Enable Bootstrap tooltips on page load
$('[data-toggle="tooltip"]').tooltip();
// Ensure Livewire updates re-instantiate tooltips
if (typeof window.Livewire !== 'undefined') {
window.Livewire.hook('message.processed', (message, component) => {
$('[data-toggle="tooltip"]').tooltip('dispose').tooltip();
});
}
});
为Bootstrap5
$(document).ready(function() {
// ...
// Enable Bootstrap tooltips on page load
$('[data-bs-toggle="tooltip"]').tooltip();
// Ensure Livewire updates re-instantiate tooltips
if (typeof window.Livewire !== 'undefined') {
window.Livewire.hook('message.processed', (message, component) => {
$('[data-bs-toggle="tooltip"]').tooltip('dispose').tooltip();
});
}
});
这会检查以确保 Livewire 首先加载到页面上,这样即使您只在某些页面上使用 Livewire,您也可以将其包含在您的普通 JS 中。
首先调用 tooltip('dispose')
将允许页面上所有新的和现有的工具提示 re-instantiated。
我最近发现我的 bootstrap 5 个工具提示在我使用 livewire 验证或执行任何特定任务后停止工作。 每当 livewire 将数据发送到服务器以验证或更改某些内容时,我的工具提示就会像普通的标题标签一样出现。
验证前:
验证后:
[
Blade HTML:
<abbr data-bs-toggle="tooltip"
data-bs-placement="left"
data-bs-html="true"
title="{!! trans('mmhg_fullform') !!}">
{!! trans('mmhg') !!}
</abbr>
不太清楚为什么会这样,我在js中也有代码
$('[data-bs-toggle="tooltip"]').tooltip();
我们是否必须在任何地方进行某些更改才能在 livewire 组件中使用 bootstrap 工具提示?
试试这个,保持水分 blade re-render...我没有测试过,只是尝试一下。
在 blade 脚本部分
window.livewire.on('tooltipHydrate', () => {
$('[data-bs-toggle="tooltip"]').tooltip();
});
在组件中
public function hydrate()
{
$this->emit('tooltipHydrate');
}
我在这里发布的另一个答案有问题,似乎只是再次调用 .tooltip()
与 Livewire 不一致,我怀疑是由于 DOM 差异问题。
这是我找到的解决方案:
为Bootstrap4
$(document).ready(function() {
// ...
// Enable Bootstrap tooltips on page load
$('[data-toggle="tooltip"]').tooltip();
// Ensure Livewire updates re-instantiate tooltips
if (typeof window.Livewire !== 'undefined') {
window.Livewire.hook('message.processed', (message, component) => {
$('[data-toggle="tooltip"]').tooltip('dispose').tooltip();
});
}
});
为Bootstrap5
$(document).ready(function() {
// ...
// Enable Bootstrap tooltips on page load
$('[data-bs-toggle="tooltip"]').tooltip();
// Ensure Livewire updates re-instantiate tooltips
if (typeof window.Livewire !== 'undefined') {
window.Livewire.hook('message.processed', (message, component) => {
$('[data-bs-toggle="tooltip"]').tooltip('dispose').tooltip();
});
}
});
这会检查以确保 Livewire 首先加载到页面上,这样即使您只在某些页面上使用 Livewire,您也可以将其包含在您的普通 JS 中。
首先调用 tooltip('dispose')
将允许页面上所有新的和现有的工具提示 re-instantiated。