I have AlpineJS (v3) wired into a phoenix app. It has been working great so far.
I recently started using Liveview in my app, and noticed that any x-show
attribute is not reacting to state changes based on the component’s data.
I have a calendar component I am trying to render from an events_live component, like so <.live_component module={MyAppWeb.EventLive.CalendarComponent} />
. There is a dropdown menu that is suppose to toggle based on an open
data attribute, very basic alpine stuff. It does not work when rendered this way. However, if I inline all the template code directly into the calling template, the drop down menu toggles as expected.
It’s worth noting everything else regarding alpine outside of my live view’s is working as intended as well. I only have encountered this issue from within a live view, using the component rendering syntax.
My app.js has the expected
dom: {
onBeforeElUpdated(from, to) {
if (from._x_dataStack) {
Alpine.clone(from, to);
}
},
code in it as well, with Alpine.start()
being called before liveSocket.connect()
As an update, I tried to recreate the issue in a scratch phoenix app (1.6.11, and liveview 0.17, using a newly generated live view with the generator mix phx.gen.live
), unfortunately, everything worked as expected there, so I am now aware there must be some user error somewhere. I am hoping someone can offer some insight into where these things can go wrong.