首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用绑定值和绑定值:自定义组件Blazor上的事件

如何使用绑定值和绑定值:自定义组件Blazor上的事件
EN

Stack Overflow用户
提问于 2019-11-22 06:50:57
回答 3查看 37.9K关注 0票数 17

在Blazor中,使用输入时,

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

这将创建一个使用oninput事件更新的双向绑定。

我想在一个具有自定义事件和自定义属性的自定义组件上重新创建这个函数。

CustomInput.razor

代码语言:javascript
运行
复制
<input value="@Value" oninput="@OnInput" />

@code {
   [Parameter]
   public string Value { get; set; }

   [Parameter]
   public EventCallback<ChangeEventArgs> OnInput { get; set; }
}

我想用这种方式使用它。

代码语言:javascript
运行
复制
<CustomInput bind-Value="@InputValue" bind-Value:event="OnInput" />

现在有可能在布兹尔身上吗?如果是,我怎样才能做到?

编辑:

对于任何遇到这种情况的人来说,这似乎都是有效的。我不确定这个特性是在问题提出后添加的,还是一直都是这样工作的,但是上面的代码应该可以按原样工作。通常情况下,您的事件名应该是ValueChanged,但是如果您有理由使用另一个事件名,比如在有OnInput和OnChange的输入中,那么您可以使用这种格式。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-24 20:03:24

是的,Blazor支持双向绑定。它与EventCallbacks (必须触发)一起工作,默认使用基于名称约定的事件,例如:{PropertyName}Changed。此外,您还可以重写此命名约定@bind-{Prop}:event="{EventCallbackName}"。在您的代码示例中,您只是重写这个默认事件名,而不是触发它。

在您的代码中有两个问题:

  1. 您必须定义bind,从@开始,在""内部,没有必要对is:@bind-{PropertyName}="{variable}"使用@更正。

将代码更改为:<CustomInput @bind-Value="InputValue" @bind-Value:event="OnInput" />

  1. 已经写过,当实际值发生变化时,必须触发这些事件。将代码更新为:
代码语言:javascript
运行
复制
private string _value;
[Parameter] public string Value 
{ 
   get => _value; 
   set
   {
      if(value == _value)
        return;

      _value = value;  
      if(OnInput.HasDelegate)
      {
         OnInput.InvokeAsync(_value);
      }  
   }
}
票数 11
EN

Stack Overflow用户

发布于 2019-11-22 07:24:10

事件参数必须被称为ValueChanged

代码语言:javascript
运行
复制
<input value="@Value" @oninput="ValueChanged" />

@code {
   [Parameter]
   public string Value { get; set; }

   [Parameter]
   public EventCallback<ChangeEventArgs> ValueChanged { get; set; }
}

读取组件参数绑定

票数 13
EN

Stack Overflow用户

发布于 2022-09-25 13:12:10

只需在输入中使用@bind属性即可!

代码语言:javascript
运行
复制
 <input @bind="myProperty" />
 
 @code{
     private string? myProperty; 
}

参考资料:ASP.NET核心Blazor数据绑定

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

https://stackoverflow.com/questions/58988952

复制
相关文章

相似问题

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