首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@bind和@bind-value的区别

@bind和@bind-value的区别
EN

Stack Overflow用户
提问于 2019-10-03 23:03:22
回答 3查看 10K关注 0票数 33

使用@bind@bind-value有什么区别

我制作了这个简单的示例,并在浏览器中对其进行了测试,我看不出有任何区别。

代码语言:javascript
复制
<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;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-20 04:35:52

简短版本

@bind@bind-value的重写,事件设置为"onchange“。

这两个命令等效:

代码语言:javascript
复制
 ... @bind-value="userName" @bind-value:event="onchange" ...
 ... @bind="userName" ...

长版本

@bind属性完成两个独立的(但相关的)任务:

  1. 将表达式绑定到<Input...的值component
  2. Binds将触发组件的ValueChanged属性

的委托

表达式和委托都是必需的@bind-Value的实现如下所示:

代码语言:javascript
复制
 ... @bind-value="userName" @bind-value:event="onchange" ...

我们同时设置表达式(="userName")和委托(="onchange")。

“更简单”的@bind=只是一个覆盖,其代理预设为"onchange“。因此,这两个命令在功能上是相同的:

代码语言:javascript
复制
 ... @bind-value="userName" @bind-value:event="onchange" ...
 ... @bind="userName" ...

使用覆盖方法的一个大大简化的类比:

代码语言:javascript
复制
public void bind-value(string value, string event)
{..}

public void bind(string value)
{
  bind-value(value, "onchange");
}

使用完整@bind-value版本的几个常见用例包括

用户键入电子邮件地址时更新用户界面

  1. 用户键入

时更新UI

请记住,onchange事件只会在组件失去焦点时触发PropertyChanged。相反,我们希望由oninput事件触发PropertyChanged

代码语言:javascript
复制
... @bind-value="H1Content" @bind-value:event="oninput" ...
... @bind-value="email" @bind-value:event="oninput" ...
票数 43
EN

Stack Overflow用户

发布于 2019-10-04 03:52:55

引用Component Binding文档:

组件和DOM元素的

数据绑定是通过@bind属性完成的。(...)使用具有CurrentValue属性(<input @bind="CurrentValue" />)的@bind实质上等同于以下操作:

代码语言:javascript
复制
<input value="@CurrentValue"
       @onchange="@((ChangeEventArgs __e) => CurrentValue = __e.Value)" />

除了使用@bind语法处理onchange事件外,还可以通过使用事件参数(@bind-value:event)指定@bind-value属性来使用其他事件绑定属性或字段。( onchange__,oninput )

总结

如果您想在每个输入更改上重置绑定值(而不是在丢失的输入焦点上一次设置所有更改),则应该在@bind-value:event上使用@bind-valueoninput

代码语言:javascript
复制
<input @bind-value="CurrentValue" 
       @bind-value:event="oninput" />

如果您尝试在不使用@bind-value的情况下使用@bind-value:event (仅使用@bind ),则会引发预编译错误:

错误值:找不到与属性“”bind -value:RZ10004“”对应的非参数化绑定属性“”

但是对于@bind@bind-valueXXX.razor.g.cs生成的文件是相同的。

票数 8
EN

Stack Overflow用户

发布于 2021-10-27 08:34:15

这两者之间没有任何显著的差异。你可以使用@bind-value和@bind-value:event,也可以任意使用@bind和@bind:event对。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58221915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档