Beautifully integrate your client-side JavaScript and CBWIRE using AlpineJS.
Many page interactions don't warrant a full server roundtrip, such as toggling a modal or a hidden element. In these instances, we recommend using AlpineJS.
AlpineJS allows you to add JavaScript behavior directly into your markup in a declarative way. If you are familiar with VueJS, Alpine should feel similar.
For more installation information, visit the Alpine Docs.
Below is an example of using AlpineJS to toggle a list on the page.
You need CBWIRE v2.3.6 or greater to use entangle.
CBWIRE has a powerful entangle() method that allows you to "entangle" a CBWIRE and AlpineJS data property. With entanglement, both client-side and server-side properties are instantly synchronized, regardless of whether the value was changed server-side in CFML or client-side using JavaScript.
This provides data model binding both client-side and server-side.
Consider this simple Counter Wire:
And now, our template:
We define an AlpineJS property named counter and then call the built-in CBWIRE method entangle(), passing it the name of the server-side data property we want to bind with.
Next, we are incrementing our Counter in two separate ways:
Incrementing the counter by calling the increment Action using CBWIRE
Incrementing the AlpineJS property counter value in JavaScript, triggering an immediate update to the server and re-rendering of the Counter Wire.
Updating CBWIRE server-side on every AlpineJS property change is optional. You can also delay the server-side updates until the next CBWIRE request that goes out by chaining a .defer modifier like so.