Контекст
У меня есть форма, полностью построенная с использованием компонента livewire, потому что мне нужно связать несколько входных данных для выполнения вычислений в реальном времени. Я ожидаю, что выпадающие элементы не изменятся, но поля ввода текста должны быть динамическими.
Проблема
когда я ввожу значение в связанное поле <input>, ранее выбранные элементы в раскрывающемся списке <select> сбрасываются. Гифка выпуска:
()
Я попытался использовать функцию "old('VALUE')", но, похоже, это не дало никакого эффекта.
Это код ввода селектора «проект» (код селектора этапа идентичен):
<select id = "range_project_id" name = "project_id" value = "{{ old('project_id') }}"
class = "px-2 form-select" disabled form = "create-land-registry-form">
<option selected>Choose a project..</option>
<option disabled>{ID}:{Name}</option>
@foreach (App\Models\Project::all() as $project)
<option value = "{{ $project->id }}">
{{ $project->id . ': ' . $project->name }}
</option>
@endforeach
</select>
Это код одного из селекторов диапазона:
<div class = "row">
<input wire:model.lazy = "landRangeStart" type = "text" name = "land_id_start"
id = "land_range_start" disabled form = "create-land-registry-form"
class = "col-3 form-control-lg border mx-2" placeholder = "Starting from"
value = "{{ old('land_id_start') }}" />
</div>
Я попытался использовать функцию "old('VALUE')", но, похоже, это не дало никакого эффекта.
В родительском div добавьте wire:ignore.self
.
Например:
<div wire:ignore.self><-- Parent div -->
//Your other dropdown code in here
</div>
Эта директива указывает Livewire игнорировать изменения в подмножестве HTML в вашем компоненте.
Поскольку вы используете необработанный выбор HTML, а не стороннюю библиотеку, такую как Select2, мой вопрос: почему бы не привязать значение выбора к компоненту livewire вот так?
Это решит вашу проблему, и компонент будет знать о ценности с самого начала.