Event Bus
Splade has a built-in Event Bus that allows for communication between components. Events can be emitted by one component, and listened for by another.
Emit from Vue component
To emit an event, you may call the emit
method, for example, in a custom Vue component, on the global $splade
instance:
<script>export default { methods: { emitCheckoutEvent() { this.$splade.emit('checkout'); } },};</script>
If you're using the setup
attribute on a <script>
block, you may use Vue's inject
function.
<script setup>import { inject } from "vue"; const Splade = inject("$splade"); function emitCheckoutEvent() { Splade.emit('checkout');}</script>
Additionally, you may pass data along with the event:
Splade.emit('checkout', { id: 1 });
Emit on event
It's also possible to call the emit
method from another event. For example, Bridge Components and the Form Component emit error
and success
events that you can hook into:
<x-splade-form @error="$splade.emit('checkout-failed')">
Listen for events
You may register a listener by using the on
method:
this.$splade.on('checkout-failed', function() { // do something});
When the callback is rather simple, you may use a Script Component to avoid writing a custom Vue component:
<x-splade-script> $splade.on('checkout-failed', function() { // do something });</x-splade-script>