似乎搜索结果中的所有示例都在使用绑定,更新绑定变量oninput。这是除了使用外部JavaScript之外唯一被批准的方法吗?我的意思是,如果我分配了一个@ref
,我不能使用@ref变量获得当前值,假设像
<input type="text" @ref="myinputbox" />
....
string value = myinputbox.Value;
是的,还有另一种方法。如果您输入并悬停@onchange
事件,您可以看到事件处理程序的预期签名,它接受ChangeEventArgs
,它公开参数的Value
—在本例中,是在进行更改后具有新内容的字符串。所以:
<input @onchange=HandleChange />
<div>@DisplayMessage</div>
@code {
string DisplayMessage = "";
async Task HandleChange (ChangeEventArgs args){
DisplayMessage = args.Value.ToString();
}
}
是的,你可以这样使用@ref
:
@page "/"
<PageTitle>Index</PageTitle>
<input type="text" @oninput=OnChange @ref="element" />
@code {
private ElementReference element;
private string? value;
void OnChange(ChangeEventArgs e)
{
this.value = e.Value?.ToString();
}
}
但是你引用的不是component
,而是html元素。ElementReference
只包含一个由内置JS互操作代码使用的Guid,可以用来引用您编写的自定义JS互操作中的元素。在this.value=...
上休息一下,看看element
。