Javascript 引导选择在Laravel livewire渲染后不工作
我有一个元素在第一次渲染时可以很好地工作。它初始化为:Javascript 引导选择在Laravel livewire渲染后不工作,javascript,laravel,laravel-livewire,Javascript,Laravel,Laravel Livewire,我有一个元素在第一次渲染时可以很好地工作。它初始化为: $(document).ready(function () { $('select').selectpicker(); }); 但是调用livewire的render函数后,元素不再作为引导选择器呈现 通过查看这两个文档(相关部分和),我认为下面的代码应该可以修复它: <script> document.addEventListener("livewire:load", function(event) {
$(document).ready(function () {
$('select').selectpicker();
});
但是调用livewire的render函数后,
元素不再作为引导选择器呈现
通过查看这两个文档(相关部分和),我认为下面的代码应该可以修复它:
<script>
document.addEventListener("livewire:load", function(event) {
window.livewire.hook('afterDomUpdate', () => {
$('select').selectpicker('refresh');
});
});
</script>
及
在更新后的
中,这两种方法都不起作用。如果我从控制台调用所有这些函数,DOM不会更新
元素,因此实际上这些函数似乎不起作用。我认为,每次更新DOM时,您都在重新初始化选择器选择器。这就是为什么每当你使用
$('select').selectpicker('refresh');
在livewire钩子中,它基本上刷新dom中新初始化的选择器选择器。我猜是这样的,因为根据你上面的代码和语句,除非在幕后发生了我提到的错误,否则它应该是有效的
我不知道我是否有道理。刷新前,请检查是否正在重新初始化。让我知道试试看
$('.selectpicker').selectpicker('refresh');
我知道这实际上和你的一样,但在我的例子中,并不是所有的选择都是引导选择,所以只针对.selectpicker类似乎达到了预期的效果。这可能是个骗人的把戏,但对我来说很有效。如果其他人被困在这里,你可以这样做
<div wire:ignore id="for-bootstrap-select">
<select class="form-control" data-container="#for-bootstrap-select">
@foreach($data as $item)
<option value="{{ $item->id }}">{{ $item->name }}</option>
@endforeach
</select>
</div>
@foreach($数据作为$项)
{{$item->name}
@endforeach
原因只需在htmlinput/select
标签上添加wire:ignore
,我也有类似的问题,但我的情况是,在这里使用select2插件名称时,会损失数小时,这与使用'select'
有什么不同?我知道您现在使用的是类而不是元素类型,但是名为refresh
的函数仍然是一样的?虽然此代码可以解决OP的问题,但最好包含一个关于代码如何解决OP问题的解释。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或使用源文档补充说明。您可以将其放在livewire刀片文件中……但是您是否也需要在app.js中使用jquery并在app.scss中导入css?我用的是mix?是的。因为我的livewire组件扩展了主布局,所有资产(js/css)都在主布局中初始化。我使用的是CDN,而不是本地托管库,但即使您使用的是mix,我也确信它不会影响任何东西。嗨,BezhanSalleh,它根本不会渲染,除非使用类表单控件,但如果我尝试使用select multiple with multiple data actions box=“true”,这就是我想要的,它只会显示一个带有所有选项的open select。你能看看我的问题吗。你好,贾帕,看看。。。我希望它能帮助。。。如果没有,你需要发布实际的代码片段,这样我就可以看一下。。。因为在我的测试中它工作得很好。。。还发布了游乐场的链接,你可以在那里查看。嗨,BenzhanSalleh,首先非常感谢你花时间帮助我,我将检查并测试,我会给出反馈,问候。
$('.selectpicker').selectpicker('refresh');
<div wire:ignore id="for-bootstrap-select">
<select class="form-control" data-container="#for-bootstrap-select">
@foreach($data as $item)
<option value="{{ $item->id }}">{{ $item->name }}</option>
@endforeach
</select>
</div>