egil / Htmxor

Supercharges Blazor static server side rendering (SSR) by seamlessly integrating the Htmx.org frontend library.
MIT License
124 stars 13 forks source link

How to associate event handler callback #30

Open egil opened 5 months ago

egil commented 5 months ago

When a component has markup that includes event handlers, Htmxor needs to be able unambiguously identify which event handler to invoke., e.g.:

These two are unambiguous because they reference the 
same event handler method even though their hx-get attribute 
has the same value.
<div hx-get="/" @hxget=@HandleGet />
<div hx-get="/" @hxget=@HandleGet />

These two are ambiguous because the event handlers (lambda) 
are distinct and they share the same hx-get value.
Will cause Htmxor to throw.
<div hx-get="/page" @hxget=(() => {}) />
<div hx-get="/page" @hxget=(() => {}) />

These two are unambiguous because they reference 
distinct event handlers and their hx-get attribute are different.
<div hx-get="/page2" @hxget=(() => {}) />
<div hx-get="/page3" @hxget=(() => {}) />

@code {
  private void HandleGet(HtmxEventArgs args) { }
}

This works as illustrated above, i.e. based on the hx-ACTION's attribute value. However, this could be extended to include other unique attributes on the element the handler is attached to, e.g.:

This avoids users having to custom query parameter on their action URLs.