What is the difference of using @bind
and @bind-value
?
I made this simple example, and testing it in the browser, I didn\'t see any difference.
@bind
is an override of @bind-value
with the event set to "onchange".
These two commands are equivalent:
... @bind-value="userName" @bind-value:event="onchange" ...
... @bind="userName" ...
The @bind
attribute accomplishes two separate (but related) tasks:
component
ValueChanged
propertyBoth the expression and the delegate are required. An implementation of @bind-Value
looks like this:
... @bind-value="userName" @bind-value:event="onchange" ...
We are setting both the expression (="userName"
) and the delegate (="onchange"
).
The "easier" @bind=
is just an override with the delegate preset to "onchange". So these two commands are functionally the same:
... @bind-value="userName" @bind-value:event="onchange" ...
... @bind="userName" ...
A greatly simplified analogy using overriding methods:
public void bind-value(string value, string event)
{..}
public void bind(string value)
{
bind-value(value, "onchange");
}
A couple of common use-cases for using the full @bind-value
version are
Remember, the onchange
event will only trigger PropertyChanged
when the component loses focus. Instead, we want PropertyChanged
to be triggered by the oninput
event:
... @bind-value="H1Content" @bind-value:event="oninput" ...
... @bind-value="email" @bind-value:event="oninput" ...