#php #laravel #laravel-livewire
#php #laravel #laravel-livewire
Вопрос:
Я пытаюсь написать свои первые примеры с использованием LiveWire, я хочу сделать что-то такое же простое, как…
<div v-if="active">
Active things
</div>
<div v-else>
Inactive things
</div>
<button @click="toggle" type="button">toggle</button>
Я создал свой пример компонента с php artisan make:livewire sample
помощью, в
sample.blade.php:
<div>
<div wire:model="active">
Active things
</div>
<div wire:model="!active">
Inactive things
</div>
</div>
<button wire:click="toggle">toggle</button>
Компонент, который я только добавил:
public $active=true;
public function toggle() {
$this->active = !$this->active;
}
Конечно, это не работает. Я мог бы использовать обычные директивы blade, но мой основной интерес к Livewire заключается в том, чтобы иметь возможность изменять DOM без перезагрузки страницы.
Что было бы эквивалентно?
Комментарии:
1. Вы пробовали
@if($active) active @else disabled @endif
?2. Нет … как внутри класса?
3. в этом смысл Livewire. Вы используете blade. Если $active изменяется, то часть представления повторно отображается, изменяя эту часть страницы
4. Конечно, это было настолько очевидно, что это причиняет боль. Я думал, что это должно быть больше похоже на Vue… Я все утро пытался понять, как это сделать
5. Также есть
wire:click="$toggle('normal')"
, который позволяет исключить метод и просто переключить это свойство напрямую. Хотя ваш код переключает свойство, отличное от того, что вы проверяете, я предполагаю, что это просто ошибка копирования / вставки
Ответ №1:
Вы можете просто сделать так
{{-- Don t forget to alway wrap the component in a div --}}
<div>
<div>
@if($active) Active @else Inactive @endif things
</div>
<button wire:click="toggle">toggle</button>
</div>
Комментарии:
1. Это было настолько очевидно, что я чувствую себя таким глупым, даже спрашивая об этом. Я думал о типе Vue, а не о blade. Большое спасибо!
2. Да, я склонен терять из виду простую функциональность блейда. Нужно помнить, что Livewire расширяет Blade, он не заменяет ничего, что делает Blade