JavaScript 内容更改后停止执行 - Laravel Livewire
JavaScript Stop Executing after the content changes - Laravel Livewire
我有一个javascript代码来制作一个滑块,在滑块内部,通过livewire调用方法时内容发生变化,问题是在调用它时,滑块爆炸了,并且javascript 代码无效。
查看:
@foreach($section->children()->get() as $subSection)
<button wire:click="serviceChanger({{ $subSection->id }})">{{ $subSection->name }}</button>
@endforeach
@foreach($services as $service)
the services here changes depending on the serviceChanger method
@endforeach
javascript
<script>
var swiper = new Swiper('.swiper-container', {
slidesPerView: 1,
spaceBetween: 10,
// init: false,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
breakpoints: {
640: {
slidesPerView: 1,
spaceBetween: 20,
},
768: {
slidesPerView: 2,
spaceBetween: 40,
},
1024: {
slidesPerView: 4,
spaceBetween: 50,
},
}
})
</script>
组件:
public function serviceChanger($id)
{
// some logic
}
在我调用 ServiceChanger 后,javascript 在服务更改时将不起作用。
有什么想法吗?
我通过在 serviceChanger
方法结束时调度浏览器事件解决了我的问题
$this->dispatchBrowserEvent('contentChanged');
在 JavaScript 文件中捕获这样的事件
window.addEventListener('contentChanged', event => {
// your JS code
});
当 Livewire 刷新内容时,您需要 re-initialize 您的 javaScript 代码。
当livewire将DOM中的HTML替换为你新的HTML时,JS代码的none执行
您必须手动确保一切再次执行
有关更多信息,请查看 Livewire Event
我有一个javascript代码来制作一个滑块,在滑块内部,通过livewire调用方法时内容发生变化,问题是在调用它时,滑块爆炸了,并且javascript 代码无效。
查看:
@foreach($section->children()->get() as $subSection)
<button wire:click="serviceChanger({{ $subSection->id }})">{{ $subSection->name }}</button>
@endforeach
@foreach($services as $service)
the services here changes depending on the serviceChanger method
@endforeach
javascript
<script>
var swiper = new Swiper('.swiper-container', {
slidesPerView: 1,
spaceBetween: 10,
// init: false,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
breakpoints: {
640: {
slidesPerView: 1,
spaceBetween: 20,
},
768: {
slidesPerView: 2,
spaceBetween: 40,
},
1024: {
slidesPerView: 4,
spaceBetween: 50,
},
}
})
</script>
组件:
public function serviceChanger($id)
{
// some logic
}
在我调用 ServiceChanger 后,javascript 在服务更改时将不起作用。 有什么想法吗?
我通过在 serviceChanger
方法结束时调度浏览器事件解决了我的问题
$this->dispatchBrowserEvent('contentChanged');
在 JavaScript 文件中捕获这样的事件
window.addEventListener('contentChanged', event => {
// your JS code
});
当 Livewire 刷新内容时,您需要 re-initialize 您的 javaScript 代码。
当livewire将DOM中的HTML替换为你新的HTML时,JS代码的none执行
您必须手动确保一切再次执行
有关更多信息,请查看 Livewire Event