El enlace bidireccional de Blazor no se detecta cuando se actualiza desde JS

blazor javascript

Pregunta

Tengo un componente enlazado bidireccional simple:

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

Todo funciona bien cuando escribo texto en el cuadro de entrada. Pero, si el valor de entrada se establece desde javascript, blazor no puede detectar el valor cambiado.

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

Traté de generar algunos eventos en un elemento como 'tecla presionada' y así, pero la var privada MyVar no tiene cambios en el lado del cliente blazor.

Me gustaría enviar de vuelta a blazor algunos valores del cliente, supongo que cambiar el valor de una entrada oculta puede ser una solución, pero no funciona.

Respuesta aceptada

Cuando ingresa un valor en el cuadro de entrada, se genera un evento y, por lo tanto, Blazor lo sabe y actualiza la propiedad (MyVar) a la que está enlazado el cuadro de entrada (así es como funciona el enlace angular de dos vías), pero cuando cambia el valor del cuadro de entrada desde JavaScript, Blazor no tiene forma de saber acerca de esta ocurrencia.

Pero, hey, ¿por qué harías una cosa así?

Para enviar datos de JavaScript a Blazor, debe definir un método público y estático en Blazor, anotado con el atributo [JSInvokable], y una función de JavaScript que llama a este método:

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

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

Lea más aquí: https://blogs.msdn.microsoft.com/webdev/2018/07/25/blazor-0-5-0-experimental-release-now-available/




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué