javascript - 从 JS 更新时未检测到 Blazor 双向绑定(bind)

标签 javascript blazor

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

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

当我在输入框上写文字时一切正常。但是,如果输入值是从 javascript 设置的,则 blazor 无法检测到更改后的值。

document.getElementById('myInput').value='Random Value';

我试图在元素上引发一些事件,例如“按键”等,但是私有(private)变量 MyVar 在 blazor 客户端没有任何变化。

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

最佳答案

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

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

要将数据从 JavaScript 发送到 Blazor,您应该在 Blazor 中定义一个公共(public)和静态方法,用属性 [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/

关于javascript - 从 JS 更新时未检测到 Blazor 双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51748825/

相关文章:

javascript - 如何以 24 小时格式比较 2 个时间,以检查 1 个时间是否早于另一个时间

Javascript |不区分大小写的字符串替换

javascript - 像 fb messenger 一样长按增加图标/图像的大小

javascript - 使用 AJAX 请求加载图像不起作用

Javascript - 将图像绘制到 Canvas 时加载 GIF 卡住(Phonegap/Cordova)

asp.net - Blazor 性能

asp.net-core - 升级到预览版 6 后 Blazor 子应用程序 404 错误

blazor - 启用 RCL 的 CSS 隔离以在 Blazor 服务器中工作

.net - 在 Ubuntu 和 Certbot 上使用 SSL 的 Blazor

c# - JWT 不会使用 Blazor 存储在 ASP.NET Core 中