从JS更新时未检测到Blazor双向绑定

blazor javascript

我有一个简单的双向绑定组件:

<input type="text"  id="myInput" bind="@MyVar" />
...
@functions {
    private string MyVar { get; set; } = "foo";

当我在输入框上写文本时,所有运行正常。但是,如果输入值是从javascript设置的,则blazor无法检测到更改的值。

<input type="text"  id="myInput" bind="@MyVar" />
...
@functions {
    private string MyVar { get; set; } = "foo";

我尝试在'按下'等元素上引发一些事件,但是私有var MyVar在blazor客户端没有变化。

我想从客户端发回一些值,我想改变隐藏输入的值可能是解决方案,但不能正常工作。

一般承认的答案

当你在输入框中输入一个值时,会引发一个事件,因此Blazor知道这一点,并且它更新了输入框绑定到的属性(MyVar)(这就是Angular双向绑定的工作方式),但是当您从JavaScript更改输入框的值时,Blazor无法知道此事件。

但是,嘿,你为什么要做这样的事情?

要将数据从JavaScript发送到Blazor,您需要在Blazor中定义一个公共和静态方法,使用attibute [JSInvokable]注释,以及一个调用此方法的JavaScript函数:

[JSInvokable]
public static Task SendMessageAsync(string message)
{
    // Do something with message
}

DotNet.invokeMethodAsync(assemblyName, 'SendMessageAsync', "Hello Blazor");

点击此处了解更多信息: https//blogs.msdn.microsoft.com/webdev/2018/07/25/blazor-0-5-0-experimental-release-now-available/




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因