Ven*_*sky 28 c# asp.net-core blazor
使用@bind
和 有@bind-value
什么区别?
我做了这个简单的例子,并在浏览器中测试,我没有看到任何区别。
<p>@@bind @increment1</p>
<input
type="text"
@bind="@increment1"
/>
<p>@@bind-value @increment2</p>
<input
type="text"
@bind-value="@increment2"
/>
@code {
string increment1;
string increment2;
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*hen 36
@bind
是@bind-value
事件设置为“onchange”的覆盖。
这两个命令是等效的:
... @bind-value="userName" @bind-value:event="onchange" ...
... @bind="userName" ...
Run Code Online (Sandbox Code Playgroud)
该@bind
属性完成两个独立(但相关)的任务:
<Input...
组件的值ValueChanged
属性的委托两者的表达和委托被需要。的实现@bind-Value
如下所示:
... @bind-value="userName" @bind-value:event="onchange" ...
Run Code Online (Sandbox Code Playgroud)
我们设置两个表达式(="userName"
)和委托(="onchange"
)。
“更简单”@bind=
只是一个覆盖,委托预设为“onchange”。所以这两个命令在功能上是一样的:
... @bind-value="userName" @bind-value:event="onchange" ...
... @bind="userName" ...
Run Code Online (Sandbox Code Playgroud)
使用覆盖方法的一个大大简化的类比:
public void bind-value(string value, string event)
{..}
public void bind(string value)
{
bind-value(value, "onchange");
}
Run Code Online (Sandbox Code Playgroud)
使用完整@bind-value
版本的几个常见用例是
请记住,该onchange
事件只会PropertyChanged
在组件失去焦点时触发。相反,我们希望PropertyChanged
被oninput
事件触发:
... @bind-value="H1Content" @bind-value:event="oninput" ...
... @bind-value="email" @bind-value:event="oninput" ...
Run Code Online (Sandbox Code Playgroud)
引用组件绑定文档:
到组件和 DOM 元素的数据绑定是通过
@bind
属性完成的。(...)@bind
与CurrentValue
属性 (<input @bind="CurrentValue" />
)一起使用本质上等同于以下内容:
<input value="@CurrentValue"
@onchange="@((ChangeEventArgs __e) => CurrentValue = __e.Value)" />
Run Code Online (Sandbox Code Playgroud)
除了使用
@bind
语法处理 onchange 事件之外,还可以通过使用@bind-value
事件参数 (@bind-value:event
)指定属性来使用其他事件绑定属性或字段。(onchange
,oninput
)
总结
如果您想在每次输入更改时重置绑定值(而不是在丢失输入焦点时立即设置所有更改),您应该使用@bind-value
and oninput
on @bind-value:event
:
<input @bind-value="CurrentValue"
@bind-value:event="oninput" />
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用@bind-value:event
不@bind-value
(只使用@bind
)一个编译预引发错误:
错误 RZ10004:找不到与属性“bind-value:event”相对应的非参数化绑定属性
但是XXX.razor.g.cs
生成的文件与@bind
和相同@bind-value
。
归档时间: |
|
查看次数: |
8306 次 |
最近记录: |