У меня создана динамическая строка, и я хочу удалить ее, но удаляются только данные из этой строки, а поля ввода не обновляются. Я использую Livewire для создания и удаления строки. Пользовательский интерфейс полей ввода не удаляется.
Я попробовал это, но это удалило данные только из строки.
Это код кнопки:
public function removeRow($index){
array_splice($this->createChallanRequest['order_details'], $index, 1);
}
да, предоставьте фрагмент HTML, показывающий соответствующий ввод/строку






Я предполагаю, что вы используете цикл для отображения строк. Чтобы Livewire понимал, какие строки необходимо обновить в DOM, вам необходимо предоставить уникальный атрибут Wire:key для каждой строки:
@foreach ($users as $user)
<div wire:key = "user-{{ $user->id }}">
User name: {{ $user->name }}
</div>
@endforeach
В этом примере я использовал идентификатор записи с префиксом (полезно, если у вас есть несколько списков на одной странице) в виде провода:ключ.
Если вы отображаете массив и у вас нет уникального идентификатора в строках, вы можете использовать индекс массива, но вы должны гарантировать, что он не будет переработан (ни при изменении строк, ни при их разбиении на страницы):
@foreach ($order_details as $key => $order_detail)
<div wire:key = "prefix-{{ $key }}">
.....
<button wire:click = "removeRow({{ $key }})">
DELETE
</button>
</div>
@endforeach
Поэтому, когда вы удаляете строку, вы не можете использовать для этой цели функцию splice(), поскольку она сжимает индексы. Вы можете использовать просто unset(), который удаляет строки, но оставляет индексы такими, какие они есть:
public function removeRow($index){
// I assume that $this->createChallanRequest is a property
unset ($this->createChallanRequest['order_details'][$index]);
}
Да, $this->createChallanRequest является общедоступной собственностью, но она удаляет из массива, и во внешнем интерфейсе остается пустая строка. Я использую js, чтобы удалить пустые поля спереди. Но после сохранения пустая строка снова отображается.
Хорошо. Верна ли моя интерпретация точки зрения? Пустая строка все еще существует с использованием unset, как я показал? Для более точного ответа вам необходимо опубликовать код представления и класса.
Это решено. После отключения массива нам нужно снова обновить массив новыми данными, а также обновить номер индекса. unset($this->request['details'][$index]); $this->request['detail'] = array_values($this->request['detail']);
После отключения массива нам нужно снова обновить массив новыми данными, а также обновить номер индекса.
unset($this->request['details'][$index]);
$this->request['detail'] = array_values($this->request['detail'])
Он выглядит так же, как array_splice(), но более подробный.
Что вы подразумеваете под «из строки удаляются только данные»? Также предоставьте соответствующий файл
.blade.