短版
@bind 是 @bind-value 的覆盖,事件设置为“onchange”。
这两个命令是等价的:
... @bind-value="userName" @bind-value:event="onchange" ...
... @bind="userName" ...
加长版
@bind 属性完成两个独立(但相关)的任务:
- 将表达式绑定到
<Input... 组件的值
- 绑定将触发组件的
ValueChanged 属性的委托
表达式和委托都是必需的。 @bind-Value 的实现如下所示:
... @bind-value="userName" @bind-value:event="onchange" ...
我们正在设置 both 表达式 (="userName") 和委托 (="onchange")。
“更简单”的@bind= 只是一个覆盖,委托预设为“onchange”。所以这两个命令在功能上是一样的:
... @bind-value="userName" @bind-value:event="onchange" ...
... @bind="userName" ...
使用重写方法的一个大大简化的类比:
public void bind-value(string value, string event)
{..}
public void bind(string value)
{
bind-value(value, "onchange");
}
使用完整 @bind-value 版本的几个常见用例是
- 根据用户类型更新 UI
- 验证电子邮件地址作为用户类型
记住,onchange 事件只会在组件失去焦点时触发PropertyChanged。相反,我们希望PropertyChanged 被oninput 事件触发:
... @bind-value="H1Content" @bind-value:event="oninput" ...
... @bind-value="email" @bind-value:event="oninput" ...