alpinejs / alpine

A rugged, minimal framework for composing JavaScript behavior in your markup.
https://alpinejs.dev
MIT License
28.43k stars 1.23k forks source link

Remove unnecessary parentheses from bind.md example #4363

Closed danielsbird closed 1 month ago

danielsbird commented 2 months ago

When I saw this example using x-data="dropdown()" and other examples using x-data="dropdown" I wondered what caused this example to require parentheses. It seems like adding parentheses is redundant since the example code works both with and without them.

browner12 commented 2 months ago

I think it's fine as is, and probably more accurate. dropdown() is a function you are executing to return an object.

danielsbird commented 2 months ago

@browner12 I agree with your reasoning.

How do you think Alpine's docs can help beginners like me understand that there's no difference between x-data="dropdown()" and x-data="dropdown"? Should all examples use x-data="dropdown()" instead of x-data="dropdown"?

browner12 commented 2 months ago

is kind of less of an Alpine question, and more of a JS question. Alpine does do some magic that allows you to omit the parentheses, and you're kind of not technically writing Javascript in the attribute, but IMO I treat it as valid Javascript, which is why I always use the parentheses.

consistency would be nice, and I would personally lean towards using the parentheses, but that's something a maintainer will have to decide.

ekwoka commented 1 month ago

To clarify on the difference, if the function is nested in an object, and accesses this, the this will be different between with and without the parentheses.