【问题标题】:Laravel-livewire multiple select2Laravel-livewire 多选2
【发布时间】:2021-11-10 15:22:10
【问题描述】:

我已经开始使用 Laravel-Livewire 并向其中一个组件添加了一个 Select2 选择框库。

问题是,该组件有多个选项卡,当我使用 Select2 输入在选项卡上加载组件时,一切正常:

但是,如果我在其他选项卡上加载组件,甚至更改选项卡并返回此选项卡,则 Select2 未正确加载并返回到常规多选:

我在布局上加载 CSS 和 JS 文件,所以每次我得到这个组件时都会加载它们..

我什至将此脚本添加到组件中

<script>
   $('.select2').select2();
</script>

为了强制这个输入是一个 select2 但即使这个脚本也不起作用。

【问题讨论】:

    标签: jquery-select2 laravel-livewire


    【解决方案1】:

    试试这个

    // in component
    protected $listeners = [
      'selectedItem'
    ];
    
    public function hydrate()
    {
       $this->emit('loadSelect2Hydrate');
    } 
    
    public function selectedItem($value)
    {
       dd($value);
    }
    
    // in blade script section
    <script>
      window.loadSelect2 = () => {
       $('.select2').select2().on('change',function () {
         livewire.emitTo('name-component','selectedItem',$(this).val());
    
         // or
    
         // @this.set('propertyName',$(this).val());
       });
      }
      loadSelect2();
      window.livewire.on('loadSelect2Hydrate',()=>{
         loadSelect2();
      });
    </script>
    

    【讨论】:

    • 这可以正常工作并使用正确的 UI 保留 select2,但是当我选择选项时,该值不会转到组件上的模型。它只发送一个空值。当我有wire:忽略选择时,它就像相同的行为。
    • 是的,select2 与简单的选择元素不同。一种方法是......我要更新我的答案
    猜你喜欢
    • 2022-01-12
    • 2022-06-11
    • 2021-08-22
    • 2021-03-10
    • 2021-07-02
    • 2021-10-11
    • 2021-10-31
    • 2022-01-09
    • 2021-03-01
    相关资源
    最近更新 更多