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" ...